oracle高手进 存储过程问题(ODAC控件调用重载存储过程)(300)

W

wlggslz

Unregistered / Unconfirmed
GUEST, unregistred user!
OraStoredProc控件有一个属性overload 在网络上得知 overload为0表示调用无重载过程,为1调用重载的第一个过程,为2则调用第2个存储过程,以前没调用过重载的存储过成,我试着进行了操作但没有成功. 打个比方,在某个包interface的下面有这么一个过程 write_ks_detail 在PLSQL DEVELOPER 下打开包,然后test(测试过程)中,出现提示selecte overloading下面2个同名的存储过程,双击某个过程即可,然后就能够进行测试了,但在delphi中我该怎么进行调用此过程? 我是这么做的但是没通过 try close; orastoredproc1.Overload:=2; orastoredproc1.StoredProcName:='interface.write_ks_detail'; PARAMS.Clear; with Params.CreateParam(ftstring, 'ARG_LSH', ptInput) do Asstring := dbgrid1.DataSource.DataSet.fieldbyname('lsh').asstring; ................... ................... //调试前面都正常通过,因为以前用过这个过程,现在被重载后就不知道如何调用了 //执行到execproc通不过,然后就跳出,提示'失败' execproc; except showmessage('失败'); end; 请问各位大虾,如何设置参数,设置哪几个参数,进行调用重载的过程.
 
已搞定,感谢大家对此问题的关注
 
把搞定的思路给大家留一下,将来有人遇到了可以参考。
 
我写的代码没有问题,只是付的值有问题,过程对参数进行了限制,但没给出提示,此过程不是我自己编写的在这里给大家提点建议吧,首先在写过程的时候参数做限制的话一定要给提示,在调用的时候做为输出参数进行返回,就知道哪个参数出现了问题在给参数付值的时候和query语句的参数付值是不一样的,过程的参数是一一对应的.例如: with Params.CreateParam(ftdatetime, 'ARG_KSRQ', ptInput) do Asdatetime :=DateTimePicker1.datetime; with Params.CreateParam(ftinteger, 'ARG_KSCJ', ptInput) do Asinteger :=strtoint(trim(edit3.text)); 把参数付值颠倒 with Params.CreateParam(ftinteger, 'ARG_KSCJ', ptInput) do Asinteger :=strtoint(trim(edit3.text)); with Params.CreateParam(ftdatetime, 'ARG_KSRQ', ptInput) do Asdatetime :=DateTimePicker1.datetime;在执行过程的时候就会报错,所以写过程,错误作为输出参数返回在调试的时候是非常有必要的
 
顶部