一个事务的问题
begin tran
...
if(a> 1)
begin
if(b> 1)
raiserror( "b不能大于1 ",18,18)
end
if(a <1)
begin
if(c> 1)
raiserror( "b不能大于1 ",18,18)
end
..具体操作
我想在上面那里,任意有raiserror发生就不执行下面的具体操作,该怎么处理
我在这样写但不行
if(@@error=0)
commit tran
else
rollback tran
但是这样写就算上面出现了raiserror,下面仍然照样执行
------解决方案--------------------呵呵,加return
------解决方案--------------------定义一个变量,在执行前给它赋一个值,如果出错,则把它改成另一个值,这样执行结束后去判断它就可以了
------解决方案--------------------写成存储过程 :
create proc usp_2
as
begin tran
select * into tttt from ttttttttttttttttt
if @@error <> 0
begin
rollback tran
return
end
select * into tt111 from t
-- rollback tran
if @@error <> 0
begin
rollback tran
return
end
commit tran