SQL SERVER存储过程中使用事务与try catch
类别:数据库 浏览量:1218
时间:2016-5-3 SQL SERVER存储过程中使用事务与try catch
SQL SERVER存储过程中使用事务与try catch一、格式类似于
CREATE PROCEDURE YourProcedure
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY---------------------开始捕捉异常
BEIN TRAN------------------开始事务
UPDATE A SET A.names = B.names FROM 表1 AS A INNER JOIN 表2 AS B ON A.id = B.id
UPDATE A SET A.names = B.names FROM 表1 AS A INNER JOIN 表2 AS B ON A.TEST = B.TEST
COMMIT TRAN -------提交事务
END TRY-----------结束捕捉异常
BEGIN CATCH------------有异常被捕获
IF @@TRANCOUNT > 0---------------判断有没有事务
BEGIN
ROLLBACK TRAN----------回滚事务
END
EXEC YourLogErrorProcedure-----------记录存储过程执行时的错误信息,自定义
END CATCH--------结束异常处理
END
二、捕获错误的常用函数
1、ERROR_NUMBER() 返回错误号。
2、ERROR_SEVERITY() 返回严重级别。
3、ERROR_STATE() 返回错误状态号。
4、ERROR_PROCEDURE() 返回出现错误的存储过程或触发器的名称。
5、ERROR_LINE() 返回导致错误的行号。
6、ERROR_MESSAGE() 返回错误消息的完整文本。该文本可包括任何可替换参数所提供的值,如长度、对象名或时间。
三、实例
ALTER PROC usp_AccountTransaction
@AccountNum INT,
@Amount DECIMAL
AS
BEGIN
BEGIN TRY --Start the Try Block..
BEGIN TRANSACTION -- Start the transaction..
UPDATE MyChecking SET Amount = Amount - @Amount
WHERE AccountNum = @AccountNum
UPDATE MySavings SET Amount = Amount + @Amount
WHERE AccountNum = @AccountNum
COMMIT TRAN -- Transaction Success!
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
BEGIN
ROLLBACK TRAN --RollBack in case of Error
END
EXEC YourLogErrorProcedure-----------记录存储过程执行时的错误信息,自定义
END CATCH
END
GO
标签:存储过程
您可能感兴趣
- SQL SERVER中调用存储过程
- sql怎么把表移到另一个数据库中(sql存储过程实例--动态根据表数据复制一个表的数据到另一个表)
- 使用VS调试存储过程
- mysql存储过程遍历数据(Mysql 存储过程中使用游标循环读取临时表)
- mysql创建存储过程的代码(MySQL修改存储过程的详细步骤)
- SQL SERVER存储过程中使用事务与try catch
- sqlserver调试存储过程(sql server2008调试存储过程的完整步骤)
- 如何排查mysql存储过程的问题(Mysql修改存储过程相关权限问题)
- Sql Server常用系统存储过程
- mssql 存储过程查询语句(MSSQL分页存储过程完整示例支持多表分页存储)
- mysql存储过程声明(MySQL存储过程的深入讲解in、out、inout)
- mybatis执行sql源码解析(mybatis调用sqlserver存储过程返回结果集的方法)
- sqlserver带参数的存储过程(SQL Server 日期和时间的内部存储过程)
- sqlserver存储过程同步数据(SQL Server存储过程同时返回分页结果集和总数)
- 存储过程中如何获取错误信息
- mysql存储过程定义表(MySQL存储过程的创建、调用与管理详解)
- 不走心的古装造型 舒畅 毁容式 出演,萧蔷雷出新高度(不走心的古装造型)
- 嘉南传 第22集(嘉南传第22集)
- 哪版孙悟空最萌 黄渤躺萌了(哪版孙悟空最萌)
- 融入小人物的喜怒哀乐,黄渤饰演的角色为什么让人观看时欲罢不能(融入小人物的喜怒哀乐)
- 《极限挑战》深访都市夜归人,夜间打工者体验,黄磊录完憔悴了(极限挑战深访都市夜归人)
- Google 推出了一个游戏生成器,让不会编程的你也能自己设计游戏(推出了一个游戏生成器)
热门推荐
- docker和jenkins部署的区别(docker搭建jenkins服务的示例)
- docker重新加载nginx(Docker Nginx Log 三者的处理详解)
- python time模块记录时间(Python Datetime模块和Calendar模块用法实例分析)
- docker执行shell脚本(基于Docker搭建ELK 日志系统的方法)
- html5 canvas touch(html5 canvas手势解锁源码分享)
- python操作mysql连接池(详解Python连接MySQL数据库的多种方式)
- JS函数前面感叹号的作用
- jquery留言板代码(JavaScript实现留言板添加删除留言)
- css文字图片垂直居中对齐(CSS设置文字图片垂直居中的方法总结)
- tomcat架构解析(浅谈Tomcat多层容器的设计)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9