第一个问题 存储过程可以返回变量 create procedure name @var1 int, output @var2 int output as select var1 = 1, var2 = 2也可以返回数据集create procedure name @var1 int, output @var2 int output as select var1 = 1, var2 = 2 select * from tablename第二个问题 在主表的触发器中生成第二个表第三个问题 begin transaction insert a if @@Error <> 0 begin rollback transaction raiseerror('message', 16, 1) return end insert b if @@Error <> 0 begin rollback transaction raiseerror('message', 16, 1) return end
commit transction
如果想调试,可以用PRINT或者先放到变量里,最后:... select @Var1 as Var1,@Var2 as Var2...,@VarN as VarN go那样就返回了你的中间过程。或者,也可以返回多个记录集:... select ... ... select ... ... go 这样返回两个记录集。关于ACCESS
存储过程可以返回变量
create procedure name
@var1 int, output
@var2 int output
as
select var1 = 1, var2 = 2也可以返回数据集create procedure name
@var1 int, output
@var2 int output
as
select var1 = 1, var2 = 2
select * from tablename第二个问题
在主表的触发器中生成第二个表第三个问题
begin transaction
insert a
if @@Error <> 0
begin
rollback transaction
raiseerror('message', 16, 1)
return
end insert b
if @@Error <> 0
begin
rollback transaction
raiseerror('message', 16, 1)
return
end
commit transction
select @Var1 as Var1,@Var2 as Var2...,@VarN as VarN
go那样就返回了你的中间过程。或者,也可以返回多个记录集:...
select ...
...
select ...
...
go
这样返回两个记录集。关于ACCESS
在dbcn.Execute(sql)句出错!
触发器并不能解决问题,因为你的两个表只有有不同数据的时候才有意义,在触发器里不能提供足够的信息。
一般是用事务,在ADO里可以,在存储过程里也可以。