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
分享到:
相关推荐
TRY…CATCH是Sql Server 2005/2008令人印象深刻的新特性.提高了开发人员异常处理能力.没有理由不尝试一下Try.. Catch功能. * TRY 块 – 包含可能产生异常的代码或脚本 * CATCH 块 – 如果TRY块出现异常,代码处理流将...
4. **T-SQL流程控制**:讲述如何使用IF...ELSE、WHILE、BEGIN...END等语句进行条件判断和循环控制,以及如何处理错误(TRY...CATCH)。 5. **变量与存储过程**:介绍如何声明和使用变量,以及创建和调用存储过程,...
而在SQL Server 2005中,引入了`TRY...CATCH`块,允许在T-SQL中捕获和处理异常,包括死锁。这为开发者提供了更多的灵活性,可以在事务失败时采取适当的恢复策略。 以下是一个使用`TRY...CATCH`处理死锁的示例: ``...
SQL Server 2005引入了结构化的异常处理机制——`TRY...CATCH`,使得开发者能够更好地控制和管理运行时错误。 **示例代码**: ```sql SET XACT_ABORT ON; -- 打开try功能 BEGIN TRY BEGIN TRAN; INSERT INTO Sys...
在上面的代码中,begin try和begin catch是捕获异常时使用的,只在sql server2005/2008中支持。在begin try和end try之间的代码运行时,如果发生异常,则程序会跳转到begin catch和end catch中执行相关的rollback ...
- **TRY...CATCH**:异常处理结构,捕获并处理运行时错误。 - **BEGIN TRANSACTION、COMMIT和ROLLBACK**:用于管理事务,确保数据一致性。 ### 9. 性能调优 - **索引**:加速查询的关键,合理创建和维护索引至关...
11. **错误处理和事务管理**:介绍TRY...CATCH异常处理结构,以及如何使用BEGIN TRANSACTION、COMMIT和ROLLBACK管理事务。 通过对这些主题的深入学习,读者将能够熟练地编写复杂的T-SQL查询,解决实际数据库问题,...
总的来说,SQL Server 2005引入的`TRY...CATCH`机制极大地改善了T-SQL错误处理的能力,使得开发者能够编写更健壮、易于维护的数据库应用程序。同时,配合客户端的错误处理,可以提供更加完善的系统级错误处理方案。
在这个场景中,我们将探讨如何使用Hibernate与SQL Server 2005数据库进行基本的CRUD(Create、Read、Update、Delete)操作。 首先,我们需要确保引入了Hibernate的依赖库。从描述中的“Hibernate 所需要的 jar 包”...
在SQL Server中,错误处理是数据库操作中必不可少的一部分,它能确保即使在出现错误的情况下,程序也能优雅地处理异常并保持数据的完整性。`TRY...CATCH`结构就是用来捕获和处理运行时错误的一种机制,它类似于其他...
SQL Server使用TRY…CATCH 结构实现TSQL语句的错误处理,TRY命令负责监控语句执行的情况,如果有TSQL语句发生异常,并且严重级别(Severity Level)大于10,并且小于20,那么CATCH命令会捕获到异常的错误。...
《SQL Server 2005 技术内幕:T-SQL查询》这本书是数据库管理员、开发者和学习SQL Server 2005的人员的重要参考资料。它深入探讨了T-SQL(Transact-SQL)在SQL Server 2005中的应用,这是一种用于管理和操作SQL ...
SQL Server 2005是微软推出的一款关系型数据库管理系统,它在企业级数据管理和处理中扮演着重要的角色。存储过程是SQL Server 2005中的一个核心特性,是预编译的SQL语句集合,可以理解为数据库中的可执行程序。本...
6. **T-SQL流程控制**:涵盖了IF...ELSE、CASE表达式、BEGIN...END块、WHILE循环以及TRY...CATCH异常处理结构,展示了如何在T-SQL中编写条件和循环逻辑。 7. **游标和事务管理**:讲解了如何使用游标遍历查询结果,...
9. **错误处理和日志记录**:学习如何在T-SQL中处理运行时错误,使用TRY-CATCH结构进行异常处理,以及日志记录的方法。 10. **性能优化**:探讨查询优化器的工作原理,如何使用索引提高查询性能,以及分析查询执行...
在SQL Server中,事务处理是数据库操作的核心组成部分,它确保数据的一致性和完整性。事务是一组逻辑操作,这些操作被视为单个单元,要么全部完成,要么全部回滚,以维护数据库的ACID(原子性、一致性、隔离性和持久...
- **MS SQL Server** 中使用 `TRY...CATCH` 结构来捕获并处理异常。 - **PostgreSQL** 中使用 `BEGIN...EXCEPTION` 结构来处理异常情况。 #### LIKE 条件语句 - 两者都支持使用 `LIKE` 进行模式匹配,但语法稍有...
SQL Server 2005驱动,也称为JDBC驱动,是用于Java应用程序连接Microsoft SQL Server数据库的关键组件。Java Database Connectivity (JDBC) 是Java平台的标准API,它允许Java程序通过编写Java代码与各种数据库进行...
在IT领域,尤其是在...在.NET框架中,这些概念与异常处理相结合,如使用`try-catch`块,能形成一个完整的错误处理策略,确保即使在数据库操作出错时,应用程序也能优雅地处理问题,防止崩溃并提供有用的反馈给用户。