mysql8创建存储过程

头像
码农笔录
2021-10-15 数据库 阅读量 2390

查询ID作为参数存储到其他的表
注意:delimiter 关键词不能少,下面代码可以直接复制过去,后面的代码是我的案例

delimiter //
drop procedure if exists nelsonTest;
CREATE PROCEDURE  nelsonTest()
begin
    declare temp_id varchar(36);
    declare flag int default 0;
    declare s_list cursor for 查询你的数据;
    # 为下面while循环建立一个退出标志,当游标遍历完后将flag的值设置为1
    declare continue handler for not found set flag=1;
    open s_list;  # 打开游标
    # 将游标中的值赋给定义好的变量,实现for循环的要点
        fetch s_list into temp_id;
        while flag <> 1 do

	  你的业务代码写到这里

          fetch s_list into temp_id;
        end while;
    close s_list;  # 关闭游标
end
//
delimiter ;  # 重新定义;为一句sql的结束标志

call nelsonTest(); # 调用


案例

delimiter //
drop procedure if exists nelsonTest;
CREATE PROCEDURE  nelsonTest()
begin
    declare temp_id varchar(36);
    declare flag int default 0;
    declare s_list cursor for SELECT id FROM baseline_auth.user_account ;
    # 为下面while循环建立一个退出标志,当游标遍历完后将flag的值设置为1
    declare continue handler for not found set flag=1;
    open s_list;  # 打开游标
    # 将游标中的值赋给定义好的变量,实现for循环的要点
        fetch s_list into temp_id;
        while flag <> 1 do
	  INSERT INTO app_user`(app_id,user_id,user_source) VALUES ('2c953719-7bce7dc0-017b-ce827d26', temp_id, 3);
          fetch s_list into temp_id;
        end while;
    close s_list;  # 关闭游标
end
//
delimiter ;  # 重新定义;为一句sql的结束标志

call nelsonTest(); # 调用

show procedure status;