# 如果存在名字为test的procedure则删除
drop procedure if exists test;
# 创建(创建函数使用的关键字为function 函数名())
create procedure test()
begin
# 声明变量
declare old_orgid decimal(10);
#declare temp_id decimal(10);
declare flag int default 0;
# 这是重点,定义一个游标来记录sql查询的结果
declare s_list cursor for SELECT org_organization.ORGID FROM org_organization WHERE org_organization.ORGID NOT IN (SELECT cap_partyauth.PARTY_ID FROM cap_partyauth);
# 为下面while循环建立一个退出标志,当游标遍历完后将flag的值设置为1
declare continue handler for not found set flag=1;
# 打开游标
open s_list;
# 将游标中的值赋给定义好的变量,实现for循环的要点
fetch s_list into old_orgid;
while flag <> 1 do
INSERT INTO cap_partyauth (ROLE_TYPE,PARTY_ID,PARTY_TYPE,ROLE_ID,TENANT_ID,CREATEUSER,CREATETIME) value ('role',old_orgid,'org','1001','default','sysadmin',now());
# 游标往后移(此处的游标是不是让你想起了C里面的指针)
fetch s_list into old_orgid;
end while;
##select * from s_list;
close s_list; # 关闭游标
end;
call test(); # 调用
mysql存储过程使用查询一张表中某个字段并插入到另一张表
最新推荐文章于 2022-11-09 14:55:32 发布