`

Sql Server2005 Transact-SQL 新兵器学习总结之-TRY…CATCH

阅读更多

Transact-SQL 代码中的错误可使用 TRY…CATCH 构造处理,此功能类似于C#语言的异常处理功能。TRY…CATCH 构造包括两部分:一个 TRY 块和一个 CATCH

1.TRY...CATCH 块不处理导致数据库引擎关闭连接的严重性为 20 或更高的错误。但是,只要连接不关闭,TRY...CATCH 就会处理严重性为 20 或更高的错误。

2.严重性为 10 或更低的错误被视为警告或信息性消息,TRY...CATCH 块不处理此类错误。

 

对于与TRY...CATCH 构造在同一执行级别发生的错误,TRY...CATCH 将不处理以下两类错误:

1.编译错误,例如阻止批处理执行的语法错误。

2.语句级重新编译过程中出现的错误,例如由于名称解析延迟而造成在编译后出现对象名解析错误。

Code
<!----> 1--由SELECT 语句生成的对象名解析错误是不被TRY…CATCH 构造捕捉
 2BEGIN TRY
 3    -- Table does not exist
 4    SELECT * FROM Table1;
 5END TRY
 6BEGIN CATCH
 7    SELECT 
 8        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 CATCH
15

 

如果某个错误在 TRY 块内的编写或语句级别重新编写过程中并在较低的执行级别(例如,执行 sp_executesql 或用户定义存储过程时)发生,则该错误会在低于 TRY…CATCH 构造的级别上发生,并由相关联的 CATCH 块处理。

Code
<!----> 1CREATE PROCEDURE pr_1
 2AS
 3     -- Table does not exist
 4    SELECT * FROM Table1;
 5GO
 6
 7BEGIN TRY
 8    EXECUTE pr_1
 9END TRY
10BEGIN CATCH
11    SELECT 
12        ERROR_NUMBER() AS ErrorNumber,
13        ERROR_SEVERITY() AS ErrorSeverity,
14        ERROR_STATE() AS ErrorState,
15        ERROR_PROCEDURE() AS ErrorProcedure,
16        ERROR_LINE() AS ErrorLine,
17        ERROR_MESSAGE() AS ErrorMessage;
18END CATCH;
19

 

2007年12月3日13:53:38

Code
<!----> 1--ids 主键
 2create table test1( ids int not null,
 3constraint pk_test1  primary key(ids)
 4)
 5go
 6select * from test1
 7begin try
 8
 9    BEGIN TRAN
10    insert into test1 (ids)
11    select 1
12
13    insert into test1 (ids)
14    select 2
15
16    insert into test1 (ids)
17    select 1  --违反了主键约束
18
19    COMMIT TRAN
20    PRINT 'Transaction committed'
21end try
22begin catch
23    ROLLBACK
24    PRINT 'Transaction rolled back'
25
26    SELECT
27    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 catch
34
35select * from test1
36


TRY...CATCH 使用下列错误函数来捕获错误信息:

ERROR_NUMBER() 返回错误号。

ERROR_MESSAGE() 返回错误消息的完整文本。此文本包括为任何可替换参数(如长度、对象名或时间)提供的值。

ERROR_SEVERITY() 返回错误严重性。

ERROR_STATE() 返回错误状态号。

ERROR_LINE() 返回导致错误的例程中的行号。

ERROR_PROCEDURE() 返回出现错误的存储过程或触发器的名称。

 

Code
<!----> 1BEGIN TRY
 2    SELECT 1/0;
 3END TRY
 4BEGIN CATCH
 5    SELECT
 6        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
分享到:
评论

相关推荐

    SQL Server 2008的Transact-SQL語言增強

    Microsoft SQL Server 2008 對Transact-SQL 語言進行了進一步增強!这个是对SQL2008在T_SQL方面增强作了详细的介绍!

    标准SQL和transact-sql之比较学习

    在数据库管理领域,SQL(Structured Query Language)是用于管理和处理关系型数据库的标准语言,而Transact-SQL(T-SQL)则是SQL的一个扩展,由Microsoft为它的SQL Server数据库管理系统所特有。本篇文章将深入探讨...

    Beginning Transact-SQL with SQL Server 2000 and 2005 (4 of 5)

    Beginning Transact-SQL with SQL Server 2000 and 2005 byPaul TurleyandDan Wood Wrox Press 2006 (594 pages) ISBN:076457955X Prepare for the ever-increasing demands of programming....

    SQL Server 2005 Beta 2 Transact-SQL 增强功能

    SQL Server 2005 Beta 2带来了对Transact-SQL的显著增强,这些改进主要集中在提升查询表达能力、数据完整性(DRI)支持、性能优化以及错误处理方面。以下是对这些增强功能的详细说明: 1. **排序函数**: SQL ...

    SQL Server数据库应用与开发:第04章 Transact-SQL语言基础.ppt

    Transact-SQL语言是SQL Server 2005在SQL语言的基础上增加了一些语言要素后的扩展语言,其语言要素包括注释、变量、运算符、函数和流程控制语句等。掌握Transact-SQL语言是进一步学习更多的管理技术和数据库应用开发...

    SQL Server 2008 Transact SQL Receipe

    ### SQL Server 2008 Transact-SQL Recipes #### 概述 SQL Server 2008 Transact-SQL Recipes 是一本专为数据库管理员、开发者以及任何希望深入理解 SQL Server 2008 中 Transact-SQL 功能的专业人士所编写的书籍。...

    Beginning Transact-SQL with SQL Server 2000 and 2005 (2 of 5)

    Beginning Transact-SQL with SQL Server 2000 and 2005 byPaul TurleyandDan Wood Wrox Press 2006 (594 pages) ISBN:076457955X Prepare for the ever-increasing demands of programming. Beginning with an ...

    Transact-SQL参考(SQL Server 2000) 计算机专业电子书

    《Transact-SQL参考》是针对SQL Server 2000数据库管理系统的一本详细指南,主要涵盖使用Transact-SQL进行数据库操作、查询、数据管理等核心内容。Transact-SQL是微软对标准SQL的扩展,是SQL Server的内置编程语言,...

    《Transact-SQL 权威指南》电子版(第一部分)

    Transact—SQL是结构化查询语言(SQL)的增强版本,与许多ANSI SQL标准兼容,Transact-SQL代码已成为SQL Server的核心。本书全面介绍了Transact—SQL,全书共21章,按照由浅入深的顺序,详细介绍了Transact-SQL...

    Beginning Transact-SQL with SQL Server 2000 and 2005 (1 of 5)

    Beginning Transact-SQL with SQL Server 2000 and 2005 byPaul TurleyandDan Wood Wrox Press 2006 (594 pages) ISBN:076457955X Prepare for the ever-increasing demands of programming. Beginning with an ...

    Inside Microsoft SQL Server 2008 T-SQL Programming

    T-SQL,即Transact-SQL,是SQL的一个扩展,主要用于微软的SQL Server系统中,用于数据查询、更新、插入和删除,以及复杂的存储过程和触发器的编写。 在SQL Server 2008版本中,T-SQL得到了许多增强和改进,这本书将...

    《SQL Server 数据库》Transact-SQL程序设计实验报告.pdf

    《SQL Server 数据库》Transact-SQL程序设计实验报告主要关注了Transact-SQL语言的基础应用,涵盖了注释、变量、运算符、函数以及流程控制语句的使用。实验的目标是帮助学生掌握这些核心概念,并通过实际操作来提升...

    Writing Queries Using Microsoft SQL Server 2008 Transact-SQL

    ### 使用Microsoft SQL Server 2008 Transact-SQL 编写查询 #### 概述 本课程旨在为学生提供使用Microsoft SQL Server 2008中的Transact-SQL语言编写基本查询所需的技能与知识。课程结束后,学员将能够熟练地使用...

    Inside Microsoft SQL Server 2008 T-SQL Programming.pdf

    本书主要聚焦于T-SQL(Transact-SQL)编程语言的使用,T-SQL是SQL Server使用的SQL方言,它不仅包括标准SQL的功能,还扩展了许多专为SQL Server设计的独特特性。T-SQL编程基础部分涵盖了以下内容: - **SQL语句语法...

    sql server 2012 T-SQl基础教程 源码和示例数据库

    本教程专注于Microsoft SQL Server 2012中的Transact-SQL(T-SQL)语言,这是SQL Server的主要查询语言,用于数据操作、查询、存储过程和数据库对象的编程。T-SQL是SQL Server开发者的核心技能,无论你是新手还是...

    SQL.Server.2008.Transact-SQL.Recipes

    ### SQL Server 2008 Transact-SQL Recipes #### 一、概述 《SQL Server 2008 Transact-SQL Recipes》是一本由Joseph Sack编写的关于Microsoft SQL Server 2008数据库系统及其强大的查询语言Transact-SQL的专业...

    Transact-SQL权威指南

    《Transact-SQL权威指南》是一本深入探讨SQL在数据库管理中的应用的书籍,主要针对Transact-SQL,这是Microsoft SQL Server所使用的SQL方言。本书旨在帮助读者掌握T-SQL的高级技巧,优化性能,并利用其强大的功能...

    Exam Ref 70-761 Querying Data with Transact-SQL

    Prepare for Microsoft Exam 70-761–and help demonstrate your real-world mastery of SQL Server 2016 Transact-SQL data management, queries, and database programming. Designed for experienced IT ...

    Transact-SQL数据库编程.ppt

    学习Transact-SQL对于任何想要在SQL Server环境中进行数据库开发或管理的人来说都是至关重要的。掌握这些知识将使开发者能够创建高效、健壮的数据库应用程序,并有效地管理和维护数据库系统。通过深入理解T-SQL的...

Global site tag (gtag.js) - Google Analytics