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常用系统存储过程
- 如何获取存储过程返回值
- 存储过程异常处理
- 使用VS调试存储过程
- 存储过程中如何获取错误信息
- mysql存储过程声明(MySQL存储过程的深入讲解in、out、inout)
- sqlserver带参数的存储过程(SQL Server 日期和时间的内部存储过程)
- 怎么写存储过程sql server(SqlServer存储过程实现及拼接sql的注意点)
- SQL SERVER中调用存储过程
- MySql存储过程
- mysql创建存储过程的代码(MySQL修改存储过程的详细步骤)
- SQL SERVER存储过程调试
- sqlserver 存储过程(SQL Server解析XML数据的方法详解)
- mybatis执行sql源码解析(mybatis调用sqlserver存储过程返回结果集的方法)
- 存储过程中使用事务Transaction
- mysql存储过程遍历数据(Mysql 存储过程中使用游标循环读取临时表)
- 世界上只有妈妈好(世界上只有妈妈好的歌词)
- 为什么现在社会越来越卷了(现在社会为什么发展那么快呢)
- 直播带货能赚到很多钱吗(直播带货能赚到很多钱吗现在)
- 做网红真的很能赚钱吗(做网红真的很能赚钱吗)
- 10句英语常用(英语常用900句)
- 爱情能当饭吃吗(爱情能当饭吃吗说说)
热门推荐
- margin auto 实现居中,与text-align:center的区别
- kubernetes的安全机制(浅析kubernetes的控制器和标签)
- css3渐变动画(CSS3径向渐变radial-gradient实现波浪边框和内倒角的方法)
- dedecms栏目标签的语法(dede中当前栏目选择技巧及注意事项)
- 云ip内网虚拟机使用(新网云主机如何使用密钥进行登陆)
- dedecms 内容页模板(dedecms列表页与详情页调用tag标签的方法)
- html5 video标签
- 面试如何回答 5年内职业规划是什么?
- 微信小程序转盘动画效果(微信小程序实现摇筛子效果)
- 虚拟主机服务器和云主机的区别(选择独享IP虚拟主机的好处有哪些?)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9