SQL server异常

异常捕捉

错误信息的返回,在网上找的记录一下

begin try
--...sql语句块
end try
begin catch 
--...sql语句块
ERROR_NUMBER() --返回错误号。 
ERROR_SEVERITY() --返回严重性。 
ERROR_STATE() --返回错误状态号。 
ERROR_PROCEDURE() --返回出现错误的存储过程或触发器的名称。 
ERROR_LINE() --返回导致错误的例程中的行号。 
ERROR_MESSAGE() --返回错误消息的完整文本。 该文本可包括任何可替换参数所提供的值,如长度、对象名或时间。
end catch

例子:

1、创建一个捕捉异常的表

create table LogTable
( 
  ID              int identity(1,1),--错误序号
  ErrorNumber     int,--错误号
  ErrorSeverity   int,--严重性
  ErrorState      int,--错误状态号
  ErrorProducure  varchar(200),--出现错误的存储过程或 触发器的名称
  ErrorLine       int,--导致错误的例程中的行号
  ErrorMessage    varchar(200)--错误消息的完整文本
)

2、创造一个异常

if exists (select * from sysobjects where id=OBJECT_ID(N'getWrong') AND xtype='P')
drop proc getWrong
go
create proc getWrong
as 
begin
     -----------------制造异常
     begin try
     select 1/0;
     -----------------捕获异常
     end try
     begin catch
        insert into LogTable values(ERROR_NUMBER(),ERROR_SEVERITY(),ERROR_STATE(),
        ERROR_PROCEDURE(), ERROR_LINE() ,ERROR_MESSAGE())
     end CATCH
end

--执行存储过程
exec getWrong
--查看日志表
select * from LogTable
--查看系统日志表
select * from sys.messages where message_id=8134 and language_id=2052

系统日志表执行如下:
日志表
日志表执行如下:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值