mysql存储过程使用查询一张表中某个字段并插入到另一张表

# 如果存在名字为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(); # 调用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值