1.@@error函数,在一个事务中会累加吗
例如:
begin tran
update a set a='xx' where b=3
update a set a='xx1' where b=4
if @error <> 0
rollback
else
commit
里面有2条语句,@error检测的是第二条的错误还是第一条 还是他们2个都检测后的累加?
2.mssql的报错信息,执行的时候有的错误虽然产生了,但是不会中断,会继续执行下面的代码,有的则不是,直接中断,什么样的错误会中断,哪里可以查得到。存储过程中的错误呢是否中断是根据什么判断的?
------解决方案--------------------
------解决方案--------------------
- SQL code
begin trandeclare @err intset @err=0update a set a='xx' where b=3set @[email protected]+@@errorupdate a set a='xx1' where b=4set @[email protected]+@@errorif @err <> 0rollback else commit
------解决方案--------------------
- SQL code
--用transaction 和 try catch来控制这些语句,避免出错后还执行之后的操作 正确--但是并不是select出现错误后面的不执行了。--:sql的最小执行单元应该是1个批处理。
------解决方案--------------------
- SQL code
------------------1------------------select * from abcselect * from #t1---------------------abc 不存在的情况,执行结果如下:[color=#FF0000]消息 208,级别 16,状态 1,第 1 行对象名 'abc' 无效。[/color]------------------2------------------select * from abcgoselect * from #t1----------------执行结果如下:消息 208,级别 16,状态 1,第 1 行对象名 'abc' 无效。[color=#FF0000](5 行受影响)[/color]