以下是两个存储过程的写法,哪个写法更好?我知道写法二是正确的,可缺点是如果操作多张表的话要定义很多的@err1、@err2..的中间变量,太麻烦了,方法一如果回滚,@ret返回的是多少?大家的写法是怎样的?好像不用@@error也可以?
---------------------------------
写法一:
alter PROC sp_t
(
@ret int output
)
ASbegin tran
update t set t=123
if(@@Error<>0)
begin
rollback tran
set @ret=1
end commit tran
set @ret=0
---------------------------------
写法二:
alter PROC sp_t
(
@ret int output
)
AS
decalre @err1 int
begin tran
update t set t=123
set @err1=@@error if(@err1<>0)
begin
commit tran
set @ret=0
end
else
begin
set @ret=1
rollback tran
end
---------------------------------
写法一:
alter PROC sp_t
(
@ret int output
)
ASbegin tran
update t set t=123
if(@@Error<>0)
begin
rollback tran
set @ret=1
end commit tran
set @ret=0
---------------------------------
写法二:
alter PROC sp_t
(
@ret int output
)
AS
decalre @err1 int
begin tran
update t set t=123
set @err1=@@error if(@err1<>0)
begin
commit tran
set @ret=0
end
else
begin
set @ret=1
rollback tran
end
update t set t=123
if @@error<>0 goto err_handleupdate t1 set t1=123
if @@error<>0 goto err_handle
...
commit tran
set@ret=0
return
err_handle:
rollback tran
set @ret=1
二楼说明了方法二也根本不行
http://www.sqlstudy.com/sql_article.php?id=2008060701