ストアド プロシージャは頻繁には使用されず、主にデータの内容をバッチで更新するために使用されます。ここでは、テンプレートを記録し、将来直接変更するために使用します。
これは比較的単純で、主に結果セットを走査し、条件に従ってコンテンツを変更します。詳しい注意書きがございます。
- ここに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
- クエリ内でストアド プロシージャを実行します
call template();