`

SQL Server2005 异常处理机制(Begin try Begin Catch)

阅读更多
http://blog.csdn.net/htl258/article/details/4125446


begin try
--SQL
end trybegin catch --sql (处理出错动作)
end catch

我们将可能会出错的sql 写在begin try...end try 之间,若出错,刚程序就跳到紧接着的begin try...end try 的beign catch...end catch

中,执行beign catch...end catch错误处理SQL。try..catch 是可以嵌套的。

在begin catch ...end catch中我们可以利用系统提供的下面四个函数得到出错信息:

error_number 返回错误代码

error_serverity 返回错误的严重级别

error_state 返回错误状态代码

error_message 返回完整的错误信息

上面的四个函数在同一个begin catch ...end catch可以在多次使用,值是不变的。

下面是一个简单的小例子。

begin try
select 2/0
end try

begin catch
select error_number() as error_number ,
error_message() as error_message,
error_state() as error_state,
error_severity() as error_severity
end catch


结果:

-----
error_number error_message error_state error_severity

8134 遇到以零作除数错误。 1 16

-------------------------------------------------------

不受 TRY…CATCH 构造影响的错误
TRY…CATCH 构造在下列情况下不捕获错误:

严重级别为 10 或更低的警告或信息性消息。

严重级别为 20 或更高且终止会话的 SQL Server 数据库引擎任务处理的错误。 如果所发生错误的严重级别为 20 或更高,而数据库连接未中断,则 TRY…CATCH 将处理该错误。

需要关注的消息,如客户端中断请求或客户端连接中断。

当系统管理员使用 KILL 语句终止会话时。



USE AdventureWorks;
GO

BEGIN TRY
    -- Generate a divide-by-zero error.
    SELECT 1/0;
END TRY
BEGIN CATCH
    SELECT
        ERROR_NUMBER() AS ErrorNumber,
        ERROR_SEVERITY() AS ErrorSeverity,
        ERROR_STATE() AS ErrorState,
        ERROR_PROCEDURE() AS ErrorProcedure,
        ERROR_LINE() AS ErrorLine,
        ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO



USE AdventureWorks;
GO
BEGIN TRANSACTION;

BEGIN TRY
    -- Generate a constraint violation error.
    DELETE FROM Production.Product
        WHERE ProductID = 980;
END TRY
BEGIN CATCH
    SELECT
        ERROR_NUMBER() AS ErrorNumber,
        ERROR_SEVERITY() AS ErrorSeverity,
        ERROR_STATE() as ErrorState,
        ERROR_PROCEDURE() as ErrorProcedure,
        ERROR_LINE() as ErrorLine,
        ERROR_MESSAGE() as ErrorMessage;

    IF @@TRANCOUNT > 0
        ROLLBACK TRANSACTION;
END CATCH;

IF @@TRANCOUNT > 0
    COMMIT TRANSACTION;
GO
分享到:
评论

相关推荐

    SQL Server 2005 中使用 Try Catch 处理异常

    TRY…CATCH是Sql Server 2005/2008令人印象深刻的新特性.提高了开发人员异常处理能力.没有理由不尝试一下Try.. Catch功能. * TRY 块 – 包含可能产生异常的代码或脚本 * CATCH 块 – 如果TRY块出现异常,代码处理流将...

    sql server 2005 技术内幕t-sql查询源码

    4. **T-SQL流程控制**:讲述如何使用IF...ELSE、WHILE、BEGIN...END等语句进行条件判断和循环控制,以及如何处理错误(TRY...CATCH)。 5. **变量与存储过程**:介绍如何声明和使用变量,以及创建和调用存储过程,...

    在SQL Server 2005中解决死锁问题

    而在SQL Server 2005中,引入了`TRY...CATCH`块,允许在T-SQL中捕获和处理异常,包括死锁。这为开发者提供了更多的灵活性,可以在事务失败时采取适当的恢复策略。 以下是一个使用`TRY...CATCH`处理死锁的示例: ``...

    SQL SERVER 2005 新增的几个小功能

    SQL Server 2005引入了结构化的异常处理机制——`TRY...CATCH`,使得开发者能够更好地控制和管理运行时错误。 **示例代码**: ```sql SET XACT_ABORT ON; -- 打开try功能 BEGIN TRY BEGIN TRAN; INSERT INTO Sys...

    Sql Server数据库事务介绍

    在上面的代码中,begin try和begin catch是捕获异常时使用的,只在sql server2005/2008中支持。在begin try和end try之间的代码运行时,如果发生异常,则程序会跳转到begin catch和end catch中执行相关的rollback ...

    MicroSoft Sql Server2005:T-Sql查询

    - **TRY...CATCH**:异常处理结构,捕获并处理运行时错误。 - **BEGIN TRANSACTION、COMMIT和ROLLBACK**:用于管理事务,确保数据一致性。 ### 9. 性能调优 - **索引**:加速查询的关键,合理创建和维护索引至关...

    SQL SERVER 2005技术内幕:T-SQL查询

    11. **错误处理和事务管理**:介绍TRY...CATCH异常处理结构,以及如何使用BEGIN TRANSACTION、COMMIT和ROLLBACK管理事务。 通过对这些主题的深入学习,读者将能够熟练地编写复杂的T-SQL查询,解决实际数据库问题,...

    浅谈SQL Server 2005编程中的错误处理.pdf

    总的来说,SQL Server 2005引入的`TRY...CATCH`机制极大地改善了T-SQL错误处理的能力,使得开发者能够编写更健壮、易于维护的数据库应用程序。同时,配合客户端的错误处理,可以提供更加完善的系统级错误处理方案。

    使用hibernate对sqlserver 2005进行增删改查

    在这个场景中,我们将探讨如何使用Hibernate与SQL Server 2005数据库进行基本的CRUD(Create、Read、Update、Delete)操作。 首先,我们需要确保引入了Hibernate的依赖库。从描述中的“Hibernate 所需要的 jar 包”...

    SQL SERVER 里的错误处理(try catch)

    在SQL Server中,错误处理是数据库操作中必不可少的一部分,它能确保即使在出现错误的情况下,程序也能优雅地处理异常并保持数据的完整性。`TRY...CATCH`结构就是用来捕获和处理运行时错误的一种机制,它类似于其他...

    SQL Server异常代码处理的深入讲解

    SQL Server使用TRY…CATCH 结构实现TSQL语句的错误处理,TRY命令负责监控语句执行的情况,如果有TSQL语句发生异常,并且严重级别(Severity Level)大于10,并且小于20,那么CATCH命令会捕获到异常的错误。...

    SQL.Server.2005.技术内幕.T-SQL查询.pdf

    《SQL Server 2005 技术内幕:T-SQL查询》这本书是数据库管理员、开发者和学习SQL Server 2005的人员的重要参考资料。它深入探讨了T-SQL(Transact-SQL)在SQL Server 2005中的应用,这是一种用于管理和操作SQL ...

    sql Server 2005 存储过程视频

    SQL Server 2005是微软推出的一款关系型数据库管理系统,它在企业级数据管理和处理中扮演着重要的角色。存储过程是SQL Server 2005中的一个核心特性,是预编译的SQL语句集合,可以理解为数据库中的可执行程序。本...

    inside.microsoft.sql.server.2005.t-sql.querying

    6. **T-SQL流程控制**:涵盖了IF...ELSE、CASE表达式、BEGIN...END块、WHILE循环以及TRY...CATCH异常处理结构,展示了如何在T-SQL中编写条件和循环逻辑。 7. **游标和事务管理**:讲解了如何使用游标遍历查询结果,...

    Inside Microsoft SQL Server 2008 T-SQL Programming

    9. **错误处理和日志记录**:学习如何在T-SQL中处理运行时错误,使用TRY-CATCH结构进行异常处理,以及日志记录的方法。 10. **性能优化**:探讨查询优化器的工作原理,如何使用索引提高查询性能,以及分析查询执行...

    sql server 事务处理

    在SQL Server中,事务处理是数据库操作的核心组成部分,它确保数据的一致性和完整性。事务是一组逻辑操作,这些操作被视为单个单元,要么全部完成,要么全部回滚,以维护数据库的ACID(原子性、一致性、隔离性和持久...

    PostgreSQL_与_MS_SQLServer比较

    - **MS SQL Server** 中使用 `TRY...CATCH` 结构来捕获并处理异常。 - **PostgreSQL** 中使用 `BEGIN...EXCEPTION` 结构来处理异常情况。 #### LIKE 条件语句 - 两者都支持使用 `LIKE` 进行模式匹配,但语法稍有...

    sqlserver 2005 驱动

    SQL Server 2005驱动,也称为JDBC驱动,是用于Java应用程序连接Microsoft SQL Server数据库的关键组件。Java Database Connectivity (JDBC) 是Java平台的标准API,它允许Java程序通过编写Java代码与各种数据库进行...

    用SQL Server数据库处理数据层错误

    在IT领域,尤其是在...在.NET框架中,这些概念与异常处理相结合,如使用`try-catch`块,能形成一个完整的错误处理策略,确保即使在数据库操作出错时,应用程序也能优雅地处理问题,防止崩溃并提供有用的反馈给用户。

Global site tag (gtag.js) - Google Analytics