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

--------------------------------------------------------
--代码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会重置的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值