SQLServer2000 存储过程错误机制

   Raiserror ('', 15, 1)自定义错误时,若错误ID在18以下。则SQL默认为不严重的错误。此时存储过程还能继续往下运行;若错误ID在20以上则存储过程直接退出。当使用 ID》18以上的错误时,必须使用 with log 记录。eg Raiserror ('', 20, 1) with log

同样,在嵌套条用存储过程时,若子存储过程诱发ID20以上的错误,则整个存储进程在此错误处中止。

  若在事务中处理中调用Raiserro自定义错误,则事务不会进行回滚。需自己设置事务回滚条件。

  set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
Alter Procedure [dbo].[TestError]
as
begin
 set   xact_abort   on  
  begin   tran  
  print   'aa' 
 
  raiserror('自定义错误',15,1)   with log
  print   'bb'  
  exec TestErrorSon
  print 'cc'
  if @@Error <>0
  begin
  print 'Roll'
  rollback tran
  end
  else
  commit   tran  
end

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
Alter Procedure [dbo].[TestErrorSon]
as
begin
  begin   tran  
  print   'aaSun'  
 raiserror('自定义错误Sun',15,1)   with log
  print   'bbSun'  
  if @@Error<>0
  begin
  print 'RollSon'
  rollback tran
  end
  else
  commit   tran  
end

  

 

2.select @@Indetity 无论存储过程是否提交,均能得到 新生成的ID

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值