SQLSERVER 存储过程中的事务

 1 CREATE PROCEDURE ProcedureNamme
 2 AS
 3 BEGIN
 4     SET NOCOUNT ON;
 5
 6     BEGIN TRY---------------------开始捕捉异常
 7        BEGIN TRAN------------------开始事务
 8         UPDATE A SET ... 9       ...
10         INSERT INTO ...11
12       COMMIT TRAN -------提交事务
13     END TRY-----------结束捕捉异常
14     BEGIN CATCH------------有异常被捕获
15         IF @@TRANCOUNT > 0---------------判断有没有事务
16         BEGIN
17             ROLLBACK TRAN----------回滚事务
18         END
19         EXEC YourLogErrorProcedure-----------记录存储过程执行时的错误信息,自定义
20     END CATCH--------结束异常处理
21 END

原文地址:https://www.cnblogs.com/allen-zqw/p/10205405.html

时间: 2024-10-24 13:21:29

SQLSERVER 存储过程中的事务的相关文章

SQL Server存储过程中使用事务

今天修改之前一个同事写的代码,发现方法中直接执行了两个sql语句,一个是删除用户,一个是删除该用户的权限.由于数据库数据比较多,导致有时候这个两个sql不能都执行成功,数据库出现了脏数据. 鉴于这个原因,我把两个sql放到了一个存储过程中执行,在存储过程中添加事务,使其要么都执行,要么都不执行. 代码框架如下: 1 CREATE PROCEDURE pro_TrancDemo @backvalue INT OUTPUT 2 AS 3 BEGIN 4 SET NOCOUNT ON; 5 6 BEG

一、存储过程中使用事务的简单语法

一.存储过程中使用事务的简单语法 在存储过程中使用事务时非常重要的,使用数据可以保持数据的关联完整性,在Sql server存储过程中使用事务也很简单,用一个例子来说明它的语法格式: 代码 : Create Procedure MyProcedure( @Param1 nvarchar(10),@param2 nvarchar(10))ASBeginSet NOCOUNT ON;Set XACT_ABORT ON;Begin TranDelete from table1 where name=’

sqlserver 存储过程中拼接sql语句 动态执行

ALTER PROC [dbo].[Student_Friend_Get] @startRowIndexId INT, @maxNumberRows INT, @schoolId INT, @gradeId INT, @cId INT, @keyWords NVARCHAR(100), @userName VARCHAR(50) AS BEGIN DECLARE @sqlfilter VARCHAR(max) SET @sqlfilter = ' ' IF(@schoolId <> -1) S

sqlserver存储过程中,set rowcount 0是什么意思?

一般在语句中使用set rowcount是为了使后续的查询.更新.删除操作只影响指定的行数比如 一起执行如下语句set rowcount 1SELECT * FROM sysobjects结果只返回一行,而如果不加set rowcount 1或者使用set rowcount 0就会返回所有结果我想你见到的存储过程里包含set rowcount 0的情况是因为之前应该包含set rowcount 1之类大于0的set rowcount 设置,是为了使set rowcount 0后边的语句受影响的行

mysql存储过程中使用事务

1 DROP PROCEDURE IF EXISTS test_sp1 2 CREATE PROCEDURE test_sp1( ) 3 BEGIN 4 DECLARE t_error INTEGER DEFAULT 0; 5 DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1; 6 7 START TRANSACTION; 8 INSERT INTO test VALUES(NULL, 'test sql 001'); 9 INSER

存储过程中的事务

一.存储过程中使用事务的简单语法 在存储过程中使用事务时非常重要的,使用数据可以保持数据的关联完整性,在Sql server存储过程中使用事务也很简单,用一个例子来说明它的语法格式: 1 Create Procedure MyProcedure 2 3 ( @Param1 nvarchar(10), 4 5 @param2 nvarchar(10) 6 7 ) 8 9 AS 10 11 Begin 12 13 Set NOCOUNT ON; 14 15 Set XACT_ABORT ON; 16

存储过程中使用事务

一.存储过程中使用事务的简单语法 在存储过程中使用事务时非常重要的,使用数据可以保持数据的关联完整性,在Sql server存储过程中使用事务也很简单,用一个例子来说明它的语法格式: 代码 Create Procedure MyProcedure ( @Param1 nvarchar(10), @param2 nvarchar(10) ) AS Begin Set NOCOUNT ON; Set XACT_ABORT ON; Begin Tran Delete from table1 where

sqlserver 存储过程中使用临时表到底会不会导致重编译

曾经在网络上看到过,SqlServer的存储过程中使用临时表,会导致执行计划无法重用, 运行时候会导致重编译的这么一个说法,自己私底下去做测试的时候,根据profile的跟踪结果, 如果不是统计信息变更导致导致的重编译,单单是使用临时表,并不会导致重编译, 但是对于一些特殊的情况,又确实会出现重编译的, 为了弄清楚这个问题,查阅了大量的资料,才把这个问题弄清楚,这里特意记录下来,希望武断地认为存储过程中使用了临时表就会导致重编译的这个观点得到纠正. 首先进行下面的测试,我们知道,导致临时表重编译

sqlSever 存储过程 中 创建 事务(增删改操作),唯一的主键自动生成 (格式:自定义字母+时间+五位数字,例如:S2014103010001)

描叙: 1.使用带事务的sql 存储过程. 2.添加数据时,自动创建唯一的主键 格式 [一个字母]+[时间格式]+[一个五位数] 3.使用游标,通过另一个表的多条数据,来对当前表数据的添加,并自动生产 唯一主键 格式如上. 4.使用场景:增加主键唯一的主表数据的同时,从另一个表读取多条数据然后添加到子表中,并且生产的主键唯一. 5.使用环境: sqlserver. USE [MicroMall]GO/****** Object: StoredProcedure [dbo].[SaleOrderI