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