如何调用带输出参数的存储过程 。 ( 积分: 100 )

  • 主题发起人 主题发起人 小乌龟
  • 开始时间 开始时间

小乌龟

Unregistered / Unconfirmed
GUEST, unregistred user!
本人是用ADOQUERY的。<br>代码如下。<br>Qry.close;<br>Qry.sql.close;<br>Qry.sql.add('begin');<br>Qry.sql.add(Format('dasadmin.proc_dymaxarchivesbh(%d,%d,3),[a,b]);');<br>Qry.sql.add('end;');<br>Qry.propared&nbsp;:=&nbsp;True;<br>Qry.execsql;<br>前两个参数是in&nbsp;&nbsp;&nbsp;3&nbsp;是out<br>3,代表第三个参数。。那么<br>请问:这第三个参数怎么来写呢。怎么才能把他传出来呢。<br>如果传进去两个in参数的话呢,oracle提示传入的参数类型或个数不对。
 
用TADOStoredProc吧<br>sp.ProcedureName:='proc_dymaxarchivesbh';<br>sp.Parameters.Refresh;<br>sp.Parameters[0].Value:=a;<br>sp.Parameters[1].Value:=b;<br>sp.Parameters[2].Value:=c;//请注意,如果该输出参数有默认值可以不写这一句<br>ExecProc;<br>Result:=Parameters[2].Value;
 
将你的输出参数用结果集的方式显示出来<br>在存储过程的最后一行加上&nbsp;&nbsp;select&nbsp;@param3&nbsp;as&nbsp;param3<br><br>在程序中调用<br>query.close;<br>query.sql.clear;<br>query.sql.text&nbsp;:=&nbsp;'exec&nbsp;存储过程名&nbsp;:@A,:@B';<br>query.Parameters.ParamByName('@A').value&nbsp;:=&nbsp;param1;<br>query.Parameters.ParamByName('@B').value&nbsp;:=&nbsp;param2;<br>query.open;<br>a&nbsp;:=&nbsp;query.fieldbyname('param3').asstring;
 
LS说的对的&nbsp;&nbsp;不过不需要把'SELECT&nbsp;'这句加在存储过程里&nbsp;存储过程执行完后&nbsp;走这么一句&nbsp;也是一样的
 
后退
顶部