MySQL存储过程 使用游标集更新数据【模版】

存储过程不经常使用,主要用来批量更新数据内容,这里把模板记录一下,以后使用直接拿来修改。
这个比较简单,主要就是对结果集进行遍历然后根据条件修改内容。有详细的注释。

  1. 写存储过程,这里在Navicat中写的,所以不需要修改sql的结束条件。
  delimiter $$   //将结束符修改为$$  
  -- 存储过程结束的end后使用$$
  delimiter ;    //再改回来;


```sql
CREATE DEFINER=`root`@`localhost` PROCEDURE `template`()
BEGIN
-- 将maint表中的maint_mode根据apply_id同步到apply表
-- 	声明变量
	DECLARE s int DEFAULT 0; 
	DECLARE applyId BIGINT(20);
	DECLARE maintMode int(10);
-- 	将select语句查询的结果集赋值到maintCursor游标中
	DECLARE maintCursor CURSOR FOR SELECT apply_id,maint_mode from 		`process_maint_appro_maint`;
-- 	声明当前游标遍历结束后将标志变量设置为某个值
	DECLARE CONTINUE HANDLER FOR NOT FOUND SET s=1;
-- 	打开游标
	OPEN maintCursor;
-- 			循环结束条件,上面游标的结束值为1时 结束循环
			WHILE s<>1 DO
			-- 		将游标的值赋给变量,变量名不要和返回的数据列名相同,要和结果集列的顺序一致
			FETCH maintCursor into applyId,maintMode;
-- 					所要执行的业务逻辑 更新字段内容
			update `process_maint_apply` set maint_mode=maintMode where id=applyId;
			END WHILE;
-- 			关闭游标
	CLOSE maintCursor;

	
END
  1. 在查询中,执行存储过程
call template();

猜你喜欢

转载自blog.csdn.net/chang100111/article/details/121419254
今日推荐