SQL Server中如何实现错误处理

发布时间:2022-05-21 14:54:02 作者:iii
来源:亿速云 阅读:285

今天小编给大家分享一下SQL Server中如何实现错误处理的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一、SQLServer数据库引擎错误

1、查询系统错误信息

SQLServer在每个数据库的系统视图sys.messages中存储系统自定义(Message_id <= 50000)和用户自定义(Message_id>50000)错误消息。

2、系统错误信息的严重性级别

得到的系统错误消息分为不同程度的严重性级别。严重性级别是通过数字来表示的,数字越小表示严重级别越低。反之则严重性越高。严重性较高的错误指示需要尽快解决问题。

二、用try...catch发现错误

try...catch结构       

begin try
        要执行的T-SQL代码,一旦错误将传递给catch块进行处理
      end try
      begin catch
        检索和处理错误信息的代码
      end catch
      正常执行的T-SQL语句

三、捕获错误的系统函数

 示例:

begin try
    select 1/0
end try
begin catch
    select 
        error_number() as 'number',
        error_line() as 'line',
        error_message() as 'message',
        error_severity() as 'severity',
        error_state()    as 'state'
end catch

输出结果如图所示:

SQL Server中如何实现错误处理

四、用@@ERROR捕获上一条语句的错误

T-SQL还提供了一个简单的系统函数@@ERROR来捕获上一条语句的错误。如果上一条语句执行成功。@@ERROR系统函数将返回0;如果上一条语句生成错误,@@ERROR将返回错误号。

每条语句完成时@@ERROR都会更改。

例如:

select 1/0
select * from sys.messages where message_id = @@error and language_id = 2052

 结果如图:

SQL Server中如何实现错误处理

五、用RAISERROR反馈错误

功能:

将生成的SQLServer引擎错误或警告信息(从sys.messages系统视图获得)反馈到应用程序中。sys.messages系统视图中由SQLServer自身定义的信息,其message_id列的值小于等于5000。

返回用户使用存储过程sp_addmessage创建的自定义消息(存储在系统视图sys.messages中,其message_id大于50000)。

与print语句的区别:

print语句是T-SQL提供的用于反馈信息的语句,print语句只能反馈字符串或字符串表达式的值。

raiserror语句除了print语句的功能外,还支持类似C语言仲printf函数的字符串替换功能。这样可以先在字符串中定义要替换的数据的类型和位置,在输出时自动将字符串内容进行替换。

语法: 

raiserror({ msg_id | msg_str | @local_variable })
        { ,severity,state }
         [ ,argument [ ,...n ] ] )
         [ with option [,...n] ]

参数说明:

以上就是“SQL Server中如何实现错误处理”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

推荐阅读:
  1. SQL SERVER中SQL优化
  2. Sql Server中怎么实现数据分页

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

sql server

上一篇:C语言归并排序如何应用

下一篇:python中数组array和列表list如何使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》