SQL错误处理 -- SQLSERVER 错误处理机制

来源:互联网 发布:淘宝充气娃娃收货实图 编辑:程序博客网 时间:2024/05/22 07:22

--------------------------------------------------------
--代码1

use northwind

insert into region values(1,'2424')  
select 'aa'

insert into region values(42,'2424')
select 'aa'
--------------------------------------------------------

 

同时执行上面四条语句,执行第一条时提示出错,
出错后继续执行第二、第三、第四条语句,
SQLSERVER在错误处理方面与很多高级编程语言不一样,高级语言(VB、C#等)里,
当一条语句出错,则程序终止执行,立即转到错误处理处,

--------------------------------------------------------
--代码2

use northwind

insert into region values(1,'2424',24,43)  
select 'aa'

insert into region values(42,'2424',24,43)
select 'aa'
--------------------------------------------------------

执行上面的语句,发现一条语句都没执行,包括第一条语句都没执行,
因为这属于编译错误,编译期错误不会执行任何语句。
而第一段代码是运行时错误,如果要求出现运行时错误就立即终止执行,需要用:
--------------------------------------------------------
--代码3
set xact_abort on   --设置出错后终止执行

use northwind

print '1'

insert into region values(1,'2424')   --执行到这里出错,
print '2'

insert into region values(42,'2424')
print '3'
--------------------------------------------------------

上面的语句,设置:set xact_abort on
执行到出错语句后,后面的语句都不执行了。

--------------------------------------------------------
set xact_abort on
use northwind

print '1'
raiserror('1413',14,1)
print '2'
insert into region values(42,'2424')
print '3'
--------------------------------------------------------

上面语句,设置:set xact_abort on
抛出自定义错误,抛出后,后面的语句还是一样继续执行。

另外,对于@@error,只能在执行语句后就立即查看@@error,如果又执行了其它语句,@error会重置的。

原创粉丝点击