存储过程使用回滚

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

CREATE PROCEDURE [dbo].[cunchuguocheng]

AS 
declare @num int---------变量----------------------
declare @rows int----------循环次数-----------------
declare @flag int-------标记操作是否成功:0是失败,1是成功-------
create table #prolist(
 id int identity(1,1),---自动增长
 proindex nvarchar(50)-----自定义临时表字段
)

BEGIN  
select @num=1
insert #temp select distinct 字段1 from  表1 where 条件

select @[email protected]@rowcount
BEGIN   TRAN----------------------添加回滚机制----------------------------------------

while @num<[email protected]
begin

--------------要循环的内容开始------------------

select @[email protected]+1

--------------要循环的内容结束-------------------
end
if @@error<>0------------------------判断是否有错误出现如果有则回滚,如果没有则提交---------------------------------------
 begin
  rollback tran-------------------出现错误开始回滚---------------------------

select @flag=0 end
else
 begin
  COMMIT   TRAN----------------------提交事务------------------------------
  select @flag=1
 end
select @flag as flag
END

时间: 2024-10-10 14:48:12

存储过程使用回滚的相关文章

mysql存储过程事务回滚

SQL过程代码: DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `test_procedure`() BEGIN DECLARE errno int; declare continue HANDLER for sqlexception begin rollback; set errno=1; end; start transaction; set errno=0; insert into test(name) values ('

springmvc+mybaits一个事物同时update和调用存储过程异常回滚

事物作用的impl类这样写的 @Override public int updateReturnAll(int item, int status, int idUser) { // TODO Auto-generated method stub try { int updateReturnAll = itemMapper.update****(); if(updateReturnAll>0){ Map<String, Object> map=new HashMap<String,O

第五天,存储过程,查询区分大小,事务处理(回滚,提交)

※存储过程存储过程是保存在数据库上的一段可执行代码.1.定义存储过程的语法是:Create procedure sp_name (参数..)Begin SQL语句End;2.调用它的方法:Call sp_name(参数-); //空参时则括号中不填内容 3.演示1)不带参数定义(delimiter用于定义结束符):DELIMITER $$CREATE PROCEDURE p1()BEGIN INSERT INTO person2 VALUES('P05','李四',0); SELECT * FR

带&quot;回滚&quot;功能的存储过程

Create PROC [ChangeDept] ( @FromUserID varchar(25), @ToDeptID int ) As Begin BEGIN TRANSACTION --开始事务 DECLARE @errorSun INT --定义错误计数器 SET @errorSun=0 --没错为0 declare @RoleID varchar(25) select @RoleID=RoleID from Role where RoleName='sales' update Emp

sql事务(Transaction)用法介绍及回滚实例

事务是将一系列操作作为一个单元执行,要么成功,要么失败,回滚到最初状态.在事务处理术语中,事务要么提交,要么中止.若要提交事务,所有参与者都必须保证对数据的任何更改是永久的.不论系统崩溃或是发生其他无法预料的事件,更改都必须是持久的.只要有一个参与者无法做出此保证,整个事务就会失败.事务范围内的所有数据更改将回滚到特定设置点. Begin TRANSACTION 语句1; If @@error<>0 Goto error 语句2; If @@error<>0 Goto error

sql事务(Transaction)用法介绍及回滚实例_转

sql事务(Transaction)用法介绍及回滚实例 事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性 当对多个表进行更新的时候,某条执行失败.为了保持数据的完整性,需要使用事务回滚. 显示设置事务 代码如下 begin try   www.2cto.com begin transaction insert into shi

msql,触发器无事物回滚,插入之前满足条件再插入

很少写mysql的触发器和存储过程,由于需要需要做一个很小的判断,要用到触发器,要达到的效果就是,插入之前判断是否满足条件如果不满足就不插入 如果用sqlserver 或者orcale 就很简单,按sqlserver 和orcale的思路去找事物回滚,或者抛异常,都没用,最后只有不断查资料不断尝试,只有用mysql的触发器机制,触发器中无法修改,删除原表的值,也无法有返回值 最后代码如下 CREATETRIGGER `duanxin_before_insert` BEFORE INSERT ON

JDBC PreparedStatement ,CallableStatement,以及事务,回滚举例

程序中用到的类,文件,jar 代码: 1,文件:db.properties文件内容 user=rootpassword=123url=jdbc:mysql:///student_dbdriver=com.mysql.jdbc.Driveraaa 2,类Utils.class import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException

mysql事务的提交和回滚

START TRANSACTION | BEGIN [WORK] COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE] ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE] SET AUTOCOMMIT = {0 | 1} 以上是mysql创建存储过程的官方语法.    我这里要说明的mysql事务处理多个SQL语句的回滚情况.比如说在一个存储过程中启动一个事务,这个事务同时往三个表中插入数据,每插完一张表需要判断其