用storedProc调用存储过程:(50分)

  • 主题发起人 主题发起人 SevenOrient
  • 开始时间 开始时间
S

SevenOrient

Unregistered / Unconfirmed
GUEST, unregistred user!
设计时候,已经设计好Databasename和StoredProcName属性,并且把TStroreProc的参数类型也设置好

var StrName,StrIP:String;
Secondi:integer;
begin
//各变量已经赋值
Self.StoredProc1.Close;
//self.StoredProc1.Params.Clear ;
//storedProc1.ParamByName('@commName').ParamType := ptInput;
//storedProc1.ParamByName('@commName').DataType := ftString;
StoredProc1.paramByName('@commName').Value :=StrName;

//storedProc1.ParamByName('@commIP').ParamType := ptInput;
//storedProc1.ParamByName('@commIP').DataType := ftString;
StoredProc1.paramByName('@commIP').value :=StrIP;

//storedProc1.ParamByName('@validIdleSecond').ParamType := ptInput;
//storedProc1.ParamByName('@validIdleSecond').DataType := ftinteger;
StoredProc1.paramByName('@validIdleSecond').value :=Secondi;

//storedProc1.ParamByName('@FAILUREREASON').ParamType := ptResult;
//storedProc1.ParamByName('@FAILUREREASON').DataType := ftString;

//storedProc1.ParamByName('@OPERATERSTATE').ParamType := ptResult;
//storedProc1.ParamByName('@OPERATERSTATE').DataType := ftinteger;


self.StoredProc1.ExecProc;//提示错误:错误参数!
//self.StoredProc1.GetResults;
Str:=StoredProc1.ParamByName('@FAILUREREASON').AsString;
Tempi := StoredProc1.ParamByName('@OPERATERSTATE').Asinteger;

为什么运行总是提示错误:错误参数?
 
这是3个输入参数,2个输出参数。
各位帮忙了~~~
 
像这样的问题完全可以避免自己创建参数,把把数据库建好,设置好链接,然后把存储过程
与数据库关联,并选择引用的存储过程,这时参数自动填入参数列表中,直接引用就可以了
;如果数据库是动态链接的,这时再断开,程序中加入动态链接语句就可以了,完全没有必
要写上面那么复杂的语句。最近我写的一个仓库软件就是这样用的
 
ptOutput:'Used to output a field value. Identifies a parameter
used by a stored procedure to return values to an application.'


ptResult:'Used as a return value. Identifies a parameter used by
a stored procedure to return an error or status value.
A stored procedure can only have one parameter of type ptResult.'


所以,你只能用 ptOutPut型。:)
 
同意楼上的,你用了两个ptResult参数,storedProc只能有一个ptResult参数,
它是由存储进程中Return返回的,其它返回参数要用ptOutput。
 
给分吧,老大! :)
 
ptResult 输出应该为:PTOUTPUT吧
 
多人接受答案了。
 
后退
顶部