`

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. **游标和事务管理**:讲解了如何使用游标遍历查询结果,...

    PostgreSQL_与_MS_SQLServer比较

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

    Inside Microsoft SQL Server 2008 T-SQL Programming

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

    sql server 事务处理

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

    SQL Server自定义异常raiserror使用示例

    在SQL Server中,自定义异常是开发者为了处理特定业务逻辑或增强程序的可读性和可维护性而创建的个性化错误消息。这些异常通常在存储过程或触发器中使用,以便在遇到预期之外的情况时,能够优雅地处理错误,如回滚...

    sqlserver 2005 驱动

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

Global site tag (gtag.js) - Google Analytics