Mysql游标与事物结合使用

CREATE DEFINER=`mycommcrm`@`%` PROCEDURE `myadmin_update_transfer_college`(in contractCode varchar(30))
BEGIN
	#系统管理员删除转案及之后的全部记录

   DECLARE newCollegeId varchar(64) default '';
   DECLARE oldCollegeId varchar(64) default '';
   -- 声明一个标志done, 用来判断游标是否遍历完成
   DECLARE ifEnd int  DEFAULT false;
   DECLARE t_error INTEGER DEFAULT 0;
    -- 查询正在换校的数据
   DECLARE jjl_college_curs cursor for (select id,is_change_before_id  from jjl_college_apply where contract_code =contractCode and is_now_flag='2');  
	
   -- 在游标循环到最后会将 done 设置为 1
   DECLARE CONTINUE HANDLER FOR not found SET ifEnd = true;
	 -- 异常时设置为1
   DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1; 
   #开启事物
   START TRANSACTION;
	
   #打开游标
	 open jjl_college_curs;
		
		-- 循环遍历
		read_loop: LOOP

			-- 提取游标数据
      fetch jjl_college_curs into newCollegeId,oldCollegeId;
 
			-- 判断是否退出循环
      IF ifEnd THEN
       LEAVE read_loop;
      END IF;
   
		   -- 业务代码
		   select newCollegeId from dual;

	   -- 关闭循环
		 end Loop;

   #关闭游标
   close jjl_college_curs;

   -- 结束事物
	 IF t_error = 1 THEN
				ROLLBACK;	-- 事物回滚
		ELSE
				COMMIT;	  -- 事物提交
		END IF;

END

转载跳转原文

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值