MYSQL存储过程即常用逻辑知识点总结
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,Mysql存储过程1.创建存储过程语法(格式)DELIMITER $CREATE PROCEDURE 存储过程名A(IN 传入参数名a INT,IN 传入参数名b VARCHAR(20),OUT 返回
千家信息网最后更新 2025年11月13日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安全错误
数据库的锁怎样保障安全
徐汇区网络技术服务值多少钱
供应商管理软件开发价格
通信软件开发 面经
云霄县网络安全局
达梦数据库还原详细步骤
成都的软件开发行业怎么样
宾夕法尼亚实时滚动数据库
无线网络安全测试系统
关于网络技术的问题
客户服务器体系结构的数据库
虚拟网络安全设备
邮件服务器的配置查看
计算机网络安全威胁主要
电子支付与网络安全章节测试
软件开发招标的关键
华为x86服务器 系统
软件开发座谈发言
数据库是(
城东冰晨网络技术
春节期间网络安全攻略
籽岷方块学园生存服务器
二零一八年国家网络安全
如何从服务器上查看服务商
山西井底蛙网络技术服务
空客地形数据库版本号
服务器 nas
杭州汉立互联网科技有限公司官网
什么服务器打游戏好
国外免实名服务器
计算机网络技术期末课题