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
[解决办法]
[解决办法]
直接用月亮的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 这样就可以取回返回值