首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

DELPHI顶用ADOStoredProc取出SQL储存过程中的变量

2012-11-09 
DELPHI中用ADOStoredProc取出SQL储存过程中的变量用ADOQUERY我知道怎么搞,但用adostoredproc就不会了.先谢

DELPHI中用ADOStoredProc取出SQL储存过程中的变量
用ADOQUERY我知道怎么搞,但用adostoredproc就不会了.先谢了.

CREATE proc vertex_sg_jcjb
@jc char(3), 
@rq char(10),
AS
declare @ax int
set xact_abort on  
BEGIN TRANSACTION

begin
update sg_bld set sg_bld.结存=@jc where convert(varchar(7),sg_bld.出库日期,121)=@rq
 if @@error<>0  
  begin  
  rollback tran  
  return  
  end  
set @ax=@@error

update sg_lld set sg_lld.结存=@jc where convert(varchar(7),sg_lld.出库日期,121)=@rq
 if @@error<>0  
  begin  
  rollback tran  
  return  
  end  
set @ax=@ax+@@error 

update sg_rkd set sg_rkd.结存=@jc where convert(varchar(7),sg_rkd.入库日期,121)=@rq
 if @@error<>0  
  begin  
  rollback tran  
  return  
  end  
 set @ax=@ax+@@error 

update sg_sld set sg_sld.结存=@jc where convert(varchar(7),sg_sld.收料日期,121)=@rq 
 if @@error<>0  
  begin  
  rollback tran  
  return  
  end  
set @ax=@ax+@@error 

update sg_tld set sg_tld.结存=@jc where convert(varchar(7),sg_tld.退料日期,121)=@rq
 if @@error<>0  
  begin  
  rollback tran  
  return  
  end  
set @ax=@ax+@@error 
select @ax

[解决办法]
ADOStoredProc1.Recordset 就是返回的select @ax
[解决办法]

探讨
CREATE proc vertex_sg_jcjb
@jc char(3),
@rq char(10),
@ax int output
as
加了OUTPUT后DELPHI提示"需要@AX参数,但未提供"

[解决办法]
直接用月亮的從Proc.RecordSet 裏取就行了啊。


如果有上面的提示,應該是你的參數設的不對。


你貼出你執行部分的代碼
[解决办法]
CREATE proc vertex_sg_jcjb 
@jc char(3), 
@rq char(10), 
@ax int = 0 output 
as 

改成这样
[解决办法]
ADOCommand1.CommandType:= cmdStoredProc;
ADOCommand1.CommandText:='vertex_sg_jcjb ';
ADOCommand1.Parameters.Refresh;

然后ADOCommand1.Parameters的下标一开始赋值就可以了
执行完后,分析ADOCommand1.Parameters里面的值就好了。
如果在存储过程中是output 的直接已经把值返回了
ADOCommand1.Parameters[0]就是你在存储过程中return 的值
[解决办法]
如果是需要返回@ax 值,那么只要在存储过程中的最后一句用select @ax as abc 或者其他什么你喜欢名字,然后在ADOStoredProc中用OPEN打开,然后可以用ADOSTOREDProc.fieldbyname('abc').asinteger

也可以在声明@AX 变量后面加output 这样就可以取回返回值

热点排行