sql server try...catch使用 异常处理 不错的SQL错误处理
来源:互联网 发布:网络整合营销书面方案 编辑:程序博客网 时间:2024/05/15 14:24
---提供事物回滚功能+错误信息的记录---如果不需要回滚,直接把事务去掉就OK啦!---BEGIN TRAN---COMMIT TRAN---ROLLBACK--create table test1( ids int not null,constraint pk_test1 primary key(ids))select * from test1begin tryBEGIN TRANinsert into test1 (ids)select 9insert into test1 (ids)select 7insert into test1 (ids)select 9 --违反了主键约束 PRINT 'Transaction committed'--PRINT @@ERROR--这个系统错误变量不好使COMMIT TRANend trybegin catchROLLBACKPRINT 'Transaction rolled back'SELECTERROR_NUMBER() AS ErrorNumber,ERROR_SEVERITY() AS ErrorSeverity,ERROR_STATE() AS ErrorState,ERROR_PROCEDURE() AS ErrorProcedure,ERROR_LINE() AS ErrorLine,ERROR_MESSAGE() AS ErrorMessage,@@ERROR;end catchselect * from test1
来自:http://www.cnblogs.com/jimmyray/archive/2011/08/02/2125069.html
Transact-SQL 代码中的错误可使用 TRY…CATCH 构造处理,此功能类似于C#语言的异常处理功能。TRY…CATCH 构造包括两部分:一个 TRY 块和一个 CATCH 块
1.TRY...CATCH 块不处理导致数据库引擎关闭连接的严重性为 20 或更高的错误。但是,只要连接不关闭,TRY...CATCH 就会处理严重性为 20 或更高的错误。
2.严重性为 10 或更低的错误被视为警告或信息性消息,TRY...CATCH 块不处理此类错误。
1--ids 主键 2create table test1( ids int not null,3constraint pk_test1 primary key(ids)4)5go6select * from test17begin try89 BEGIN TRAN10 insert into test1 (ids)11 select 11213 insert into test1 (ids)14 select 21516 insert into test1 (ids)17 select 1 --违反了主键约束 1819 COMMIT TRAN20 PRINT 'Transaction committed'21end try22begin catch23 ROLLBACK24 PRINT 'Transaction rolled back'2526 SELECT27 ERROR_NUMBER() AS ErrorNumber,28 ERROR_SEVERITY() AS ErrorSeverity,29 ERROR_STATE() AS ErrorState,30 ERROR_PROCEDURE() AS ErrorProcedure,31 ERROR_LINE() AS ErrorLine,32 ERROR_MESSAGE() AS ErrorMessage;33end catch3435select * from test136
TRY...CATCH 使用下列错误函数来捕获错误信息:
ERROR_NUMBER() 返回错误号。
ERROR_MESSAGE() 返回错误消息的完整文本。此文本包括为任何可替换参数(如长度、对象名或时间)提供的值。
ERROR_SEVERITY() 返回错误严重性。
ERROR_STATE() 返回错误状态号。
ERROR_LINE() 返回导致错误的例程中的行号。
ERROR_PROCEDURE() 返回出现错误的存储过程或触发器的名称。
1BEGIN TRY2 SELECT 1/0;3END TRY4BEGIN CATCH5 SELECT6 ERROR_NUMBER() AS ErrorNumber,7 ERROR_SEVERITY() AS ErrorSeverity,8 ERROR_STATE() AS ErrorState,9 ERROR_PROCEDURE() AS ErrorProcedure,10 ERROR_LINE() AS ErrorLine,11 ERROR_MESSAGE() AS ErrorMessage;12END CATCH;13
对于与TRY...CATCH 构造在同一执行级别发生的错误,TRY...CATCH 将不处理以下两类错误:
1.编译错误,例如阻止批处理执行的语法错误。
2.语句级重新编译过程中出现的错误,例如由于名称解析延迟而造成在编译后出现对象名解析错误。
1--由SELECT 语句生成的对象名解析错误是不被TRY…CATCH 构造捕捉 2BEGIN TRY3 -- Table does not exist 4 SELECT * FROM Table1;5END TRY6BEGIN CATCH7 SELECT8 ERROR_NUMBER() AS ErrorNumber,9 ERROR_SEVERITY() AS ErrorSeverity,10 ERROR_STATE() AS ErrorState,11 ERROR_PROCEDURE() AS ErrorProcedure,12 ERROR_LINE() AS ErrorLine,13 ERROR_MESSAGE() AS ErrorMessage;14END CATCH15
如果某个错误在 TRY 块内的编写或语句级别重新编写过程中并在较低的执行级别(例如,执行 sp_executesql 或用户定义存储过程时)发生,则该错误会在低于 TRY…CATCH 构造的级别上发生,并由相关联的 CATCH 块处理。
- sql server try...catch使用 异常处理 不错的SQL错误处理
- 使用TRY CATCH进行SQL Server异常处理<转载>
- SQL SERVER 里的错误处理(try catch)
- SQL SERVER 里的错误处理(try catch)
- SQL Server 异常处理机制(Begin try Begin Catch)
- 在SQL Server 2005中使用Try…Catch块进行T-SQL错误处理
- 使用Try…Catch块进行T-SQL错误处理
- 如何在 SQL Server 的存储过程和函数里进行错误处理(try catch)
- 使用try...catch的处理异常机制
- SQL Server2005 异常处理机制(Begin try Begin Catch)
- SQL Server2005 异常处理机制(Begin try Begin Catch)
- SQL Server2005 异常处理机制(Begin try Begin Catch)
- 【SQL Server学习笔记】存储过程、sp_executesql存储过程、try catch错误处理
- SQL 异常处理 Begin try end try begin catch end catch
- SQL 异常处理 Begin try end try begin catch end catch
- try catch 异常处理
- try-catch异常处理
- try catch 异常处理
- JSF知识点概览
- matlab figure 最大,最小,置顶
- MS SQL SERVER动态SQL
- yii 权限控制
- JQuery的serialize()方法
- sql server try...catch使用 异常处理 不错的SQL错误处理
- Android平台上使用属性系统(property system)
- sqlite3事务和锁的实例
- 找出只出现一次的两个数
- Python发送邮件给多人
- 239
- 最近想把自己这段时间的C#学习经历全整这来。。
- JBPM4.4环境搭建
- 关于自己写的短信拦截器在安装youni等之类的工具无法捕获到短信的解决方案