MS SQL SERVER 存储过程事务的实现方式
2010-07-01 19:38
471 查看
MS SQL SERVER 存储过程事务的实现方式
目前找到两种实现方式:
1, 使用事务的存储过程使用特殊命名, 如UP_ProductAdd_Tran, 内部只需一对事务语句即可管理所有牵涉到业务的其他过程; 其他未使用此种方式命名的过程, 内部不能使用事务相关语句, 只需输出成功失败. 这种方式的好处是容易理解, 你只需要专心业务上的代码, 意外的时候返回错误, 在最外层直接回滚即可...缺点是你可能会产生很多_Tran命名的存储过程, 不好维护.
UP_TestTransaction
参考资料:
http://www.cnblogs.com/montaque/archive/2005/03/12/117410.html 第一页评论
虽然只有几个字, 但是写的时候还是感觉到文字不行..好像说不清楚 ~!@#$%^&*
目前找到两种实现方式:
1, 使用事务的存储过程使用特殊命名, 如UP_ProductAdd_Tran, 内部只需一对事务语句即可管理所有牵涉到业务的其他过程; 其他未使用此种方式命名的过程, 内部不能使用事务相关语句, 只需输出成功失败. 这种方式的好处是容易理解, 你只需要专心业务上的代码, 意外的时候返回错误, 在最外层直接回滚即可...缺点是你可能会产生很多_Tran命名的存储过程, 不好维护.
UP_TestTransaction
CREATE PROCEDURE [dbo].[UP_TestTransaction] @LocalTranCount int output, -- 输出信息 @ResultMessage nvarchar(255) output -- 输出信息 -- 其他字段 -- 其他字段 AS -- declare @LocalTranCount int; -- set @LocalTranCount = 0; -- 将 @LocalTranCount 定义为输入输出参数 -- 将 @LocalTranCount 定义为输入输出参数 -- 当该存储过程被其他存储过程调用时 -- 传入当前的事务计数 declare @ErrorCode int; set @ErrorCode = 0; begin Transaction set @LocalTranCount = @LocalTranCount + 1; begin Transaction set @LocalTranCount = @LocalTranCount + 1; insert into [tbCar] ( CarCode, CarHongKongCode, NormalDriver, NormalDriverTel, BelongDepartmentId, BelongDepartment, CreateByUserId, CreateByUser ) values ( '------', '5555555555', '6666666666', '77777777', 0, 'uuuuuuu', 0, 'bbbbbbb' ) begin set @ErrorCode = 10; set @ResultMessage = '---------'; goto ErrorLabel; end begin Transaction set @LocalTranCount = @LocalTranCount + 1; insert into [tbCar] ( CarCode, CarHongKongCode, NormalDriver, NormalDriverTel, BelongDepartmentId, BelongDepartment, CreateByUserId, CreateByUser ) values ( '--4353---', '5555555555', '6666666666', '77777777', 0, 'uuuuuuu', 0, 'bbbbbbb' ) begin set @ErrorCode = 20; set @ResultMessage = '---------'; goto ErrorLabel; end commit Transaction commit Transaction ErrorLabel: IF(@@TranCount = @LocalTranCount) RollBack Transaction; Else Commit Transaction; return @ErrorCode;
参考资料:
http://www.cnblogs.com/montaque/archive/2005/03/12/117410.html 第一页评论
虽然只有几个字, 但是写的时候还是感觉到文字不行..好像说不清楚 ~!@#$%^&*
相关文章推荐
- MS SQL SERVER 存储过程事务的实现方式
- MS SQL Server 两种方式 实现事务
- CodeSmith 5.0工具实例篇系列3——根据表生成新增的存储过程,针对MS Sqlserver
- MS SQL server 生成 insert 数据的存储过程脚本
- MS SQL Server 2005 分页存储过程
- SQL存储过程事务和优化方法(包括查询方式语句结合)
- MS SQL Server存储过程
- 如何调用存储过程,有返回值的,有参数的,存储过程中调用存储过程。(MS SQL Server)
- SQL存储过程事务和优化方法(包括查询方式语句结合)
- CodeSmith 5.0工具实例篇系列4——根据表生成修改的存储过程,针对MS Sqlserver
- MS SQLSERVER通用存储过程分页
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC dllname (FREE)从内存中上载指定的扩展存储过程 DLL
- 如何调用存储过程,有返回值的,有参数的,存储过程中调用存储过程。(MS SQL Server)
- MS SQL Server中数据表、视图、函数/方法、存储过程是否存在判断及创建
- SQL存储过程事务和优化方法(包括查询方式语句结合)
- MS SqlServer海量数据分页存储过程收集
- SQL SERVERR中未公开的存储过程sp_MSforeachtable
- MS sql server 判断表/视图/存储过程是否存在
- SQL存储过程事务和优化方法(包括查询方式语句结合)
- MS sql server 判断表/视图/存储过程是否存在