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

DELPHI中用ADOStoredProc取出SQL储存过程中的变量,该如何处理

2013-01-25 
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参数,但未提供"

delpih中使用存储过程时,如果有参数,你需要先创建参数,然后才能访问
创建
ADOStoredProc1.Parameters.CreateParameter
[解决办法]
直接用月亮的從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 这样就可以取回返回值

热点排行