34,838
社区成员




set xact_abort on
try catch
Alter PROCEDURE [dbo].[SP_TEST]
( @RetVal int=0 output)
AS
Begin
Begin TRANSACTION
INSERT T1 (A1,A2,A3,B1,B2,B3)
SELECT A1,A2,A3,B1,B2,B3 FROM T2 WHERE B3='1';
If @@ERROR<>0
Goto Errm
UPDATE T2 SET B4=GETDATE()
WHERE B3='1';
If @@ERROR<>0
Goto Errm
UPDATE T3 SET B4=GETDATE()
WHERE A1 IN ( SELECT A1 FROM T2 WHERE B3='1' );
If @@ERROR<>0
Goto Errm
COMMIT TRANSACTION
Return @Retval
ErrM:
ROLLBACK TRANSACTION
Set @Retval = -1
Return @Retval
End
GO
alter PROCEDURE [dbo].[SP_TEST]
AS
begin try
begin tran
INSERT T1 (A1,A2,A3,B1,B2,B3)
SELECT A1,A2,A3,B1,B2,B3 FROM T2 WHERE B3='1';
UPDATE T2 SET B4=GETDATE()
WHERE B3='1';
UPDATE T3 SET B4=GETDATE()
WHERE A1 IN ( SELECT A1 FROM T2 WHERE B3='1' );
commit tran
return 0
end try
begin catch
rollback
return -1
end catch
alter PROCEDURE [dbo].[SP_TEST]
AS
begin try
begin tran
INSERT T1 (A1,A2,A3,B1,B2,B3)
SELECT A1,A2,A3,B1,B2,B3 FROM T2 WHERE B3='1';
UPDATE T2 SET B4=GETDATE()
WHERE B3='1';
UPDATE T3 SET B4=GETDATE()
WHERE A1 IN ( SELECT A1 FROM T2 WHERE B3='1' );
commit tran
end try
begin catch
rollback
raiserror('出错了',16,1)
end catch