mysql实战技巧(七)mysql存贮过程实战

举报
小鲍侃java 发表于 2021/09/11 00:48:59 2021/09/11
【摘要】 BEGIN #两个游标相隔需要 begin end 隔开 begin declare temp_id int; declare sum1 int; declare done INT DEFAULT 0; #插入管理者主表游标 declare cu...

  
  1. BEGIN
  2. #两个游标相隔需要 begin end 隔开
  3. begin
  4. declare temp_id int;
  5. declare sum1 int;
  6. declare done INT DEFAULT 0;
  7. #插入管理者主表游标
  8. declare cursor_three CURSOR FOR
  9. #跟sql语句指定游标包括的值
  10. select id from org_department_info;
  11. #指定跳出游标的条件
  12. declare continue handler for not found set done =1;
  13. #打开游标
  14. open cursor_three;
  15. #开始循环游标
  16. myLoop:LOOP
  17. #通过游标向变量中赋值
  18. fetch cursor_three into temp_id;
  19. #跳出循环的条件
  20. if done=1 then
  21. leave myLoop;
  22. end if;
  23. #查询是或否已有
  24. select count(1) as sum1 into sum1 from org_manager where departId = temp_id;
  25. #判断
  26. if sum1 = 0 THEN
  27. INSERT INTO org_manager
  28. ( `departId`, `departManagerId`, `applicationId`, `status`, `approvalSign`, `maintenancePeriod`, `remark`, `addPeople`, `addTimes`, `operatorId`, `operateTimes`)
  29. VALUES ( temp_id, 1, 1, '1', '1', '1', 1, 1, SYSDATE(), 1, SYSDATE());
  30. end if;
  31. end loop myLoop;
  32. CLOSE cursor_three ;
  33. end;
  34. BEGIN
  35. declare doneTwo INT DEFAULT 0;
  36. declare manage_id int;
  37. declare sum2 int;
  38. #插入管理者主表游标
  39. declare cursor_two CURSOR FOR
  40. select id from org_manager;
  41. declare continue handler for not found set doneTwo =1;
  42. open cursor_two;
  43. l2: LOOP
  44. fetch cursor_two into manage_id;
  45. if doneTwo = 1 then
  46. leave l2;
  47. end if;
  48. #查询是或否已有
  49. select count(1) as sum2 into sum2 from org_manager_records where orgManagerInfoId = manage_id;
  50. if sum2 = 0 THEN
  51. INSERT INTO org_manager_records
  52. ( `orgManagerInfoId`, `departName`, `departCode`, `departManagerId`, `managerName`, `status`, `applicationId`, `approvalSign`, `maintenancePeriod`, `remark`, `addPeople`, `addTimes`, `operatorId`, `operateTimes`)
  53. VALUES
  54. ( manage_id, '', '', '1', '', '1', '1', '1', '1', '111', '1', SYSDATE(), '1', SYSDATE());
  55. end if;
  56. end loop l2;
  57. CLOSE cursor_two ;
  58. end ;
  59. END

文章来源: baocl.blog.csdn.net,作者:小黄鸡1992,版权归原作者所有,如需转载,请联系作者。

原文链接:baocl.blog.csdn.net/article/details/98939740

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。