SQL的储存过程:
CREATE proc vertex_sg_jcjb(
@jc char(3),
@rq char(10))
AS
BEGIN TRANSACTIONbegin
update sg_bld set sg_bld.结存=@jc where convert(varchar(7),sg_bld.出库日期,121)=@rq
update sg_lld set sg_lld.结存=@jc where convert(varchar(7),sg_lld.出库日期,121)=@rq
update sg_rkd set sg_rkd.结存=@jc where convert(varchar(7),sg_rkd.入库日期,121)=@rq
update sg_sld set sg_sld.结存=@jc where convert(varchar(7),sg_sld.收料日期,121)=@rq
update sg_tld set sg_tld.结存=@jc where convert(varchar(7),sg_tld.退料日期,121)=@rq
COMMIT TRANSACTION
if @@error > 0
rollback tran
end
DELPHI中是用ADOStoredProc来调用的.
with sp1 do
begin
close;
prepared:=false;
procedurename:='vertex_sg_jcjb;1';
parameters.Refresh ;
parameters.ParamByName('@jc').Value:=trim(edit1.text);
parameters.ParamByName('@rq').Value :=trim(edit2.text);
execproc;
end;
GO问题:
如何设置储存过程,让其反回是否回滚(@@error的值)到ADOStoredProc中,再在DELPHI中提示是否成功.
CREATE proc vertex_sg_jcjb(
@jc char(3),
@rq char(10))
AS
BEGIN TRANSACTIONbegin
update sg_bld set sg_bld.结存=@jc where convert(varchar(7),sg_bld.出库日期,121)=@rq
update sg_lld set sg_lld.结存=@jc where convert(varchar(7),sg_lld.出库日期,121)=@rq
update sg_rkd set sg_rkd.结存=@jc where convert(varchar(7),sg_rkd.入库日期,121)=@rq
update sg_sld set sg_sld.结存=@jc where convert(varchar(7),sg_sld.收料日期,121)=@rq
update sg_tld set sg_tld.结存=@jc where convert(varchar(7),sg_tld.退料日期,121)=@rq
COMMIT TRANSACTION
if @@error > 0
rollback tran
end
DELPHI中是用ADOStoredProc来调用的.
with sp1 do
begin
close;
prepared:=false;
procedurename:='vertex_sg_jcjb;1';
parameters.Refresh ;
parameters.ParamByName('@jc').Value:=trim(edit1.text);
parameters.ParamByName('@rq').Value :=trim(edit2.text);
execproc;
end;
GO问题:
如何设置储存过程,让其反回是否回滚(@@error的值)到ADOStoredProc中,再在DELPHI中提示是否成功.
@jc char(3),
@rq char(10))
AS
BEGIN TRANSACTION begin
update sg_bld set sg_bld.结存=@jc where convert(varchar(7),sg_bld.出库日期,121)=@rq
update sg_lld set sg_lld.结存=@jc where convert(varchar(7),sg_lld.出库日期,121)=@rq
update sg_rkd set sg_rkd.结存=@jc where convert(varchar(7),sg_rkd.入库日期,121)=@rq
update sg_sld set sg_sld.结存=@jc where convert(varchar(7),sg_sld.收料日期,121)=@rq
update sg_tld set sg_tld.结存=@jc where convert(varchar(7),sg_tld.退料日期,121)=@rq
COMMIT TRANSACTION
return 0;
if @@error > 0
rollback tran
return -1
end DELPHI中是用ADOStoredProc来调用的.
with sp1 do
begin
close;
prepared:=false;
procedurename:='vertex_sg_jcjb;1';
parameters.Refresh ;
parameters.ParamByName('@jc').Value:=trim(edit1.text);
parameters.ParamByName('@rq').Value :=trim(edit2.text);
execproc;
end;
GO 通過取REUTN的返回值來判斷
是取储存过和的反回值,还是储存过程中事务的反回值.
是这样吗:sp1.Excute('vertex_sg_jcjb',cmdStoredProc,eoAsyncExecute)
var
sql : String; sql := 'delcare @a int execute procname select @a ';
adoquery1.close;
adoquery1.sql.text := sql ;
adoquery1.open;
showMessage(Adoquery1.fields[0].asstring);