博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个带事务的Sql Server存储过程例子
阅读量:4043 次
发布时间:2019-05-24

本文共 1559 字,大约阅读时间需要 5 分钟。

Create PROCEDURE [dbo].[sp_Delete_TranSample]     	ASBEGIN --SET NOCOUNT ON; --(注意:SET NOCOUNT ON 不返回受影响的行数, 前端ExecuteNonQuery  得到的受影响行数为-1)BEGINBEGIN TRY       BEGIN TRAN	           DELETE  FROM table1 WHERE ....		DELETE  FROM table2 WHERE ....	    COMMIT TRAN END TRYBEGIN CATCH   --ROLLBACK TRAN --放在这里也可以		        IF @@TRANCOUNT > 0  --(存在未执行成功的事务,则回滚. 注1)        BEGIN            ROLLBACK TRAN	            --PRINT ERROR_MESSAGE()				        END      END CATCH END--注1:每一次Begin Transaction都会引起@@TranCount加1。而每一次Commit Transaction都会使@@TranCount减1,而RollBack Transaction会回滚所有的嵌套事务包括已经提交的事务和未提交的事务,而使@@TranCount置0。

另一例子:

Create PROCEDURE sp_copy_JobRegMasterDetail(@masterRefNo int, --Job_Reg_Master's RefNo field@JobNo AS varchar(50), --Job_Reg_Master's JobNo field@JobNoType AS varchar(20) --Job Type. default 'JS')ASBEGIN BEGIN TRY    BEGIN TRAN		 -- 1. Insert Job_Reg_Master		INSERT INTO Job_Reg_Master Values(...)			-- 2. Insert Job_Reg_DetailIF @@ROWCOUNT = 0     BEGIN	   SELECT 0	   RETURN	 END	 DECLARE @RefNo_Details as INT	 DECLARE curDetail CURSOR FOR 	    SELECT RefNo FROM  Job_Reg_Details where JobNo = @JobNo and Status = 'A' Order by ItemNo       OPEN curDetail	 FETCH NEXT FROM curDetail INTO @RefNo_Details	 WHILE (@@FETCH_STATUS != -1)	   BEGIN	      		   INSERT INTO Job_Reg_Details VALUES(...)				  FETCH NEXT FROM curDetail INTO @RefNo_Details	   END	 CLOSE curDetail	 DEALLOCATE curDetail    COMMIT TRAN END TRY BEGIN CATCH   IF @@TRANCOUNT > 0     BEGIN     --PRINT ERROR_MESSAGE()    ROLLBACK TRAN       SELECT 0     END END CATCHEND

转载地址:http://fimdi.baihongyu.com/

你可能感兴趣的文章
linux printf获得时间戳
查看>>
C语言位扩展
查看>>
linux dump_backtrace
查看>>
linux irqdebug
查看>>
git 常用命令
查看>>
linux位操作API
查看>>
uboot.lds文件分析
查看>>
uboot start.s文件分析
查看>>
没有路由器的情况下,开发板,虚拟机Ubuntu,win10主机,三者也可以ping通
查看>>
本地服务方式搭建etcd集群
查看>>
安装k8s Master高可用集群
查看>>
忽略图片透明区域的事件(Flex)
查看>>
忽略图片透明区域的事件(Flex)
查看>>
AS3 Flex基础知识100条
查看>>
Flex动态获取flash资源库文件
查看>>
Flex 中的元数据标签
查看>>
flex4 中创建自定义弹出窗口
查看>>
01Java基础语法-15.for循环结构
查看>>
01Java基础语法-16. while循环结构
查看>>
01Java基础语法-18. 各种循环语句的区别和应用场景
查看>>