MYSQL存储过程即常用逻辑知识点总结
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,Mysql存储过程1.创建存储过程语法(格式)DELIMITER $CREATE PROCEDURE 存储过程名A(IN 传入参数名a INT,IN 传入参数名b VARCHAR(20),OUT 返回
千家信息网最后更新 2025年01月24日MYSQL存储过程即常用逻辑知识点总结
Mysql存储过程
1.创建存储过程语法(格式)
DELIMITER $CREATE PROCEDURE 存储过程名A(IN 传入参数名a INT,IN 传入参数名b VARCHAR(20),OUT 返回参数名c INT)BEGIN 内容..........END $
解析:
- IN 代表传入的参数,定义传入参数名,并且后面跟上传入参数类型(INT,VARCHAR,DOUBLE,........)
- OUT 代表存储过程执行完返回的数据,定义参数名,并且后面跟上参数类型(INT,VARCHAR,DOUBLE,........)
- INOUT 代表既可以传入也可以返回 ,定义参数名,并且后面跟上参数类型(INT,VARCHAR,DOUBLE,........)
2.存储过程内具体语法与逻辑
A.定义变量语法:
DECLARE 变量名a 参数类型(INT,VARCHAR(20),BOOLEAN,........) [DEFAULT NULL];
注:可以在参数类型后面加 DEFAULT NULL; 来设置初始值。
B.变量赋值:
方式1(直接对变量进行赋值):
SET 定义的变量a = NEW();
方式2(sql查询的结果直接赋值给变量):
SELECT `student`.age INTO 定义的变量a FROM `student` WHERE...........
方式3(sql查询的结果直接赋值给多个变量):
SELECT `student`.name AS 定义的变量a,`student`.age AS 定义的变量b INTO 定义的变量a,定义的变量b FROM `student` ...............
c.逻辑判断:
#IF判断: IF 条件语句(3>5) THEN 条件为TRUE时执行.........; END IF; #IF ELSE判断: IF 条件(a>0) THEN 条件为(a>0)时执行........; ELSE IF 条件(a<0) THEN 条件为(a<0)时执行.......; ELSE 其它执行.......; END IF;
D.游标,(LOOP)循环:
#例.单游标循环:create procedure my_procedure() -- 创建存储过程begin -- 开始存储过程declare my_id varchar(32); -- 自定义变量1declare my_name varchar(50); -- 自定义变量2DECLARE done INT DEFAULT FALSE; -- 自定义控制游标循环变量,默认falseDECLARE cur CURSOR FOR ( SELECT id, name FROM t_people ); -- 定义游标并输入结果集DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 绑定控制变量到游标,游标循环结束自动转true OPEN cur; -- 打开游标 posLoop: LOOP -- 开始循环体,myLoop为自定义循环名,结束循环时用到 FETCH cur into my_id, my_name; -- 将游标当前读取行的数据顺序赋予自定义变量12 IF done THEN -- 判断是否继续循环 LEAVE posLoop; -- 结束循环 END IF; -- 自己要做的事情,在 sql 中直接使用自定义变量即可 UPDATE t_user SET c_name = my_name WHERE id = my_id and rtrim(ltrim(c_name)) = ''; -- 左右去空格 COMMIT; -- 提交事务 END LOOP posLoop; -- 结束自定义循环体 CLOSE cur; -- 关闭游标END; -- 结束存储过程
#例.多游标循环:create procedure my_procedure() -- 创建存储过程begin -- 开始存储过程declare my_id varchar(32); -- 自定义变量1declare my_name varchar(50); -- 自定义变量2DECLARE done INT DEFAULT FALSE; -- 自定义控制游标循环变量,默认falseDECLARE cur_1 CURSOR FOR ( SELECT id, name FROM t_people ); -- 定义游标并输入结果集DECLARE cur_2 CURSOR FOR ( SELECT id_2,name_2 FROM t_people_2); --定义游标并输入结果集DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 绑定控制变量到游标,游标循环结束自动转true OPEN cur_1; -- 打开游标 posLoop: LOOP -- 开始循环体,myLoop为自定义循环名,结束循环时用到 FETCH cur_1 into my_id, my_name; -- 将游标当前读取行的数据顺序赋予自定义变量12 IF done THEN -- 判断是否继续循环 LEAVE posLoop; -- 结束循环 END IF; -- 自己要做的事情,在 sql 中直接使用自定义变量即可 UPDATE ..........; --自己要做的具体操作 END LOOP posLoop; -- 结束自定义循环体 CLOSE cur_1; -- 关闭游标 SET done = FALSE; -- 因为当第一个游标遍历完后其值被handler设置为TRUE了,如果不用set把它设置为 FALSE ,那么第二个游标就不会遍历了。(最好是在每个打开游标的操作前都用该语句,以确保游标能真正遍历) OPEN cur_2; -- 打开游标 posLoop_2: LOOP -- 开始循环体,myLoop为自定义循环名,结束循环时用到 FETCH cur_2 into my_id, my_name; -- 将游标当前读取行的数据顺序赋予自定义变量12 IF done THEN -- 判断是否继续循环 LEAVE posLoop_2; -- 结束循环 END IF; -- 自己要做的事情,在 sql 中直接使用自定义变量即可 INSERT ..........; --自己要做的具体操作 END LOOP posLoop_2; -- 结束自定义循环体 CLOSE cur_2; -- 关闭游标END; -- 结束存储过程
3.存储过程的调用
#调用没有返回值的存储过程CALL 存储过程名(参数.....);#调用有返回值的存储过程(获得返回值)CALL 存储过程名(@aaa);SELECT @aaa;
4.删除存储过程
DROP PROCEDURE 存储过程名;
5.注意事项
存储过程中的分号(;)很重要,尽量不要省略。
变量
游标
循环
过程
存储
参数
循环体
条件
类型
结果
数据
控制
事情
代表
方式
语法
顺序
输入
逻辑
语句
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
辽宁软件开发
厦门美网络技术
软件开发的自荐信
软件开发买什么电脑比较好
欧洲孢粉数据库
互联网电子科技网
姓杨的网络技术监督局
软件开发行业有什么公司
网络技术个人与岗位匹配度
单位网络安全领导小组文件
服务器新增内存条读不出来
如何检查数据库中ini文件
用友u9数据库
山西通信软件开发设施服务标准
网络安全等级保护测评 英文
成都舍得软件开发有限
装很多服务器干什么用
dj多多服务器开小差了
索尼z9d 双影像数据库
安装数据库提示配置注册表项无效
手机贷服务器系统迁移改造
公司软件开发环境
汕尾网络技术
宁波宏图乐销网络技术有限公司
广州办公系统软件开发哪家正规
数据库分布式表连接原因
互联网科技与医药领域
网络安全法保障个人对其信息
数据库 性能指标
西北农林科技大学软件开发专业