Sqlserver 事务处理模板

1USE StuDB 2GO 3/****** Object: StoredProcedure [dbo].[proc_live_send_answer_v4] Script Date: 06/20/2017 14:44:26 ******/ 4SET ANSI_NULLS ON 5GO 6SET QUOTED_IDENTIFIER ON 7GO 8-- ============================================= 9-- Author: YJ 10-- Create date: 2017-05-11 11-- Description: 事务 12-- ============================================= 13ALTER PROCEDURE [dbo].[proc_name] 14@answer_id varchar(50), 15@answer varchar(10), 16@uid bigint, 17@roomid int=0 out, 18@count int=0 out 19AS 20begin 21set nocount on; 22if(charindex(':',@answer_id,1)=0) 23return; 24 25set @answer=replace(@answer,',','|'); 26 27declare @Activity_No int; 28declare @quest_order tinyint; 29set @Activity_No = substring(@answer_id,1,charindex(':',@answer_id,1)-1); 30set @quest_order=substring(@answer_id,charindex(':',@answer_id,1)+1,len(@answer_id)); 31 32--尽量缩短事务占用时间 33begin try 34begin tran 35 36insert......a 37update......b 38delete......c 39 40commit tran 41select 1 as res,'' as remark 42 43end try 44begin catch 45if (@@trancount > 0) 46rollback; 47declare @ErrMESSAGE nvarchar(1024) = error_message(), 48@ERRSEVERITY int = error_severity(), 49@ERRSTATE int = error_state(); 50raiserror(@ErrMESSAGE,@ERRSEVERITY,@ERRSTATE);--抛出错误 51 52select 0 as res,'提交失败' as remark 53end catch 54 55end

事务注意事项:事务里不能包含事务,也就是说当存储过程调用存储过程的时候,外层存储过程有事务时,被调用的存储过程不能写事务,不然事务回滚不了。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )