MYSQL存储过程即常用逻辑知识点总结
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,Mysql存储过程1.创建存储过程语法(格式)DELIMITER $CREATE PROCEDURE 存储过程名A(IN 传入参数名a INT,IN 传入参数名b VARCHAR(20),OUT 返回
千家信息网最后更新 2026年11月03日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安全错误
数据库的锁怎样保障安全
互联网科技
中智农互联网科技
苏州找大状互联网科技有限公司
互联网科技工作委员会毛军
盈实互联网科技
互联网科技未来
中资互联网科技
互联网科技公司电话
小马过河互联网科技
远拓互联网科技
深圳天众互联网科技公司
成都狮子座互联网科技
互联网科技有限公司 翻译
美国互联网前沿科技
互联网实体化科技化
互联网公司科技股
深圳互联网科技的发展
黑云互联网科技有限公司
北京天晋互联网科技有限公司
互联网科技职业技能培训学校
中资互联网科技
礼当家互联网科技
天下捷融互联网科技
亿人帮互联网科技
中国互联网金融科技基金
互联网科技创新企业排名
崇明区互联网教育科技售后服务
广东鹅鹅鹅互联网科技有限公司
全球科技与互联网公司市值变化
米泉互联网科技专业怎么样