高分请教!!!如何用一个存储过程获得储存过程的返回值。(在线等待) (200分)

  • 主题发起人 主题发起人 hpretty
  • 开始时间 开始时间
H

hpretty

Unregistered / Unconfirmed
GUEST, unregistred user!
如何用一个储存过程获得储存过程的返回值。
我的储存过程是动态指定的!而不是在设计时写好的,
如果我在运行时用动态创建参数的方法是可以执行这个储存过程,
但如果我加一个象设计界面你设定储存过程之后就
可以得到你所需要的参数,同时还有一个多出来的参数,
就是@RETURN_VALUE,我想要的就是这个参数,
但在运行时加入就会报错!请各位大虾指教!谢谢!!!
 
如在发下过程中我就想要得到 Return 后面的那个值!
Create procedure sp_GetItemPaid
@glcid int ,
@timesid int,
@FeeID int =0,
@GetMan varchar(20) ,
@PayType varchar(10)='现金',
@FeeCurrency varchar(10),
@getCurrency varchar(10)='',
@GetFee money ,
@GetFine money=0,
@PayMan varchar(40),
@djbh varchar(20)
as
print 'Start'
if @GetFee <0 or @GetFine <0 or @feeID = 0 or @Timesid =0 or @glcid =0
return -1
print 'Check'
 
有两种方法:
1,设置一参数@aa int output
if ...
set @aa=-1
else
set @aa=0
2,在最后
if ....
select -1 as retunvalue
else
select 0 as retunvalue
 
如果这个过程名是在设计时指定的就可以得到,但如果不是设计时的就
给它加这个参数它也不认,这是我的代码,它就会报错!
proc.ProcedureName :='sp_CGFY_JS;1';
proc.Parameters.Clear;
proc.Parameters.CreateParameter('@Return_value',ftInteger,pdoutput,10,1);
proc.Parameters.CreateParameter('@Glcid',ftInteger,pdinput,10,1);
proc.Parameters.CreateParameter('@timesid',ftInteger,pdinput,10,200110);
proc.ExecProc;
if proc.Parameters.FindParam('@Return_Value') <>nil then
caption := proc.Parameters.FindParam('@Return_Value').Value;

如果去掉返回值就可以的!
 
我也想知道?
 
问题自己解决了:

proc.ProcedureName :='sp_CGFY_JS;1';
proc.Parameters.Clear;
关键在下面这一句!参数的类型对了就OK!
proc.Parameters.CreateParameter('@Return_Value',ftInteger,pdReturnValue,10,1);
proc.Parameters.CreateParameter('@Glcid',ftInteger,pdinput,10,1);
proc.Parameters.CreateParameter('@timesid',ftInteger,pdinput,10,200110);
proc.ExecProc;
if proc.Parameters.FindParam('@Return_Value') <>nil then
caption := proc.Parameters.FindParam('@Return_Value').Value;
 
多人接受答案了。
 
后退
顶部