mysql的存储过程

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: mysql的存储过程


image.png

存储过程除了银行,社保等机构,在大多数的项目中并不会使用。博主将常用的语法汇总。如果有兴趣可以学习。

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


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4天前
|
存储 SQL 关系型数据库
MySQL数据库进阶第四篇(视图/存储过程/触发器)
MySQL数据库进阶第四篇(视图/存储过程/触发器)
|
8天前
|
存储 关系型数据库 MySQL
MySQL周内训参照5、存储过程创建
MySQL周内训参照5、存储过程创建
25 1
|
2天前
|
存储 关系型数据库 MySQL
索引的威力--记一次MySQL存储过程优化
在MySQL存储过程中,一个`INSERT INTO SELECT`语句起初执行超过130秒,优化后,执行时间降低到1秒内,实现了100倍的性能提升。问题在于`NOT IN`子查询导致的慢查询,最终通过创建单列索引获得了最佳效果。文章还介绍了索引创建的基本语法,并讨论了单列索引与组合索引的优缺点。作者强调,随着数据量增加,索引对于查询性能的重要性,计划未来采用读写分离来进一步优化处理大量插入和查询的场景。
|
8天前
|
存储 SQL 关系型数据库
MySQL存储过程_触发器_游标——Baidu Comate
MySQL存储过程_触发器_游标——Baidu Comate
12 0
|
8天前
|
存储 SQL 关系型数据库
MySQL存储过程——if判断示例
MySQL存储过程——if判断示例
9 0
|
8天前
|
SQL 存储 关系型数据库
MySQL存储过程——Baidu Comate智能代码助手添加20条DML语句——测试索引效果
MySQL存储过程——Baidu Comate智能代码助手添加20条DML语句——测试索引效果
7 0
|
8天前
|
存储 SQL 关系型数据库
MySQL存储过程练习
MySQL存储过程练习
7 0
|
15天前
|
存储 关系型数据库 MySQL
MySql创建带事务操作的存储过程
MySql创建带事务操作的存储过程
|
11天前
|
存储 SQL 关系型数据库
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(2)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
|
11天前
|
存储 SQL 关系型数据库
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(1)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】