当前位置: 代码迷 >> Sql Server >> 求教几个百度上未给出明确答案的有关问题
  详细解决方案

求教几个百度上未给出明确答案的有关问题

热度:36   发布时间:2016-04-27 12:46:25.0
求教几个百度上未给出明确答案的问题
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的报错信息,执行的时候有的错误虽然产生了,但是不会中断,会继续执行下面的代码,有的则不是,直接中断,什么样的错误会中断,哪里可以查得到。存储过程中的错误呢是否中断是根据什么判断的?




------解决方案--------------------
探讨
实际测试了一下 事务中 也是一样 但是网上有这么一贴,,
http://www.cnblogs.com/zhuifengnianshao/archive/2010/11/24/1886939.html
不知道对不对

------解决方案--------------------
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]
  相关解决方案