MySQL5.0版本开始支持存储过程,使数据库引擎更加灵活和强大
MySQL5.0版本开始支持存储过程,使数据库引擎更加灵活和强大
目录
一、存储过程
1.1什么是存储过程
1.2存储过程的优缺点
二、创建存储过程
2.1语法与特性:
2.2声明语句分隔符
2.3过程体的标识
2.4存储过程参数设置
三、存储过程中的变量
四、MySQL变量
五、设置用户执行存储过程的权限
六、查看存储过程的状态
七、查看存储过程的创建代码
八、修改存储过程
九、删除存储过程
十、存储过程的控制语句
十一、IF–ELSE条件语句
十二、CASE条件语句
十三、WHILE循环语句
十四、LOOP循环语句
十五、循环语句
十六、迭代语句
十七 、本章总结
一、存储过程 1.1什么是存储过程 1.2存储过程的优缺点
优点
减少网络流量
提升执行速度
减少数据库连接次数
安全性高
复用性高
缺点
经验
二、创建存储过程 2.1语法与特性:
语法:
CREATE PROCEDURE 过程名 ([过程参数[,…]])
[特性] #可选项,用于设置存储过程的行为
存储过程体
常用特性:

2.2声明语句分隔符
DELIMITER $$
#或者
DELIMITER //
DELIMITER ;
2.3过程体的标识
注意事项:
//如果没有声明分隔符,编译器会将其视为普通SQL语句进行处理,编译过程会报错
//正确用法:首先用DELIMITER关键字声明当前段的分隔符,最后要将分隔符还原为默认字符
示例:
#如果存在则删除
drop procedure if exists proc_patient_countPatient;
delimiter// #声明分隔符
create procedure proc_patient_countPatient()
begin #过程体开始
select count(0) as totalCount from patient;
end// #过程体结束
delimiter; #恢复默认分割符
#调用

call proc_patient_countPatient();
2.4存储过程参数设置
定义存储过程的参数
语法:
[IN | OUT | INOUT] 参数名 数据类型
示例:
DELIMITER // #声明分隔符
CREATE PROCEDURE proc_patient_countPatient2(OUT patientNum INT)
#省略...
DELIMITER ; #恢复默认分隔符
注意:
IN:指输入参数
OUT:指输出参数
INOUT:指输入输出参数
调用执行存储过程
CALL 存储过程名([参数1,参数2, …]);
存储过程调用类似于Java中的方法调用
call proc_patient_countPatient();
三、存储过程中的变量
与Java语言类似,定义存储过程时可以使用变量
DECLARE 变量名[,变量名...] 数据类型 [DEFAULT 值];
给变量进行赋值
SET 变量名 = 表达式值[,变量名=表达式...] ;
DECLARE trade_time date DEFAULT '2020-07-10';
SET total=100;
定义存储过程时,所有局部变量的声明一定要放在存储过程体的开始;否则,会提示语法错误
四、MySQL变量
系统变量
会话变量
五、设置用户执行存储过程的权限
通过和SQL 特性控制存储过程的执行权限
语法:
CREATE
[DEFINER = { user | CURRENT_USER }] #定义DEFINER,默认为当前用户
PROCEDURE 存储过程名
[SQL SECURITY { DEFINER | INVOKER } | …]#指定DEFINER或INVOKER权限
BEGIN
…
END
注意事项:
六、查看存储过程的状态
查看数据库中已创建的存储过程
语法:
show procedure status;
查看数据库中创建的存储过程
#指定数据库名查询存储过程
show procedure status where DB = 'hospital';
#使用LIKE关键字匹配存储过程名称
show procedure status like '%patient%';
七、查看存储过程的创建代码
查看数据库中已创建的存储过程代码
SHOW CREATE PROCEDURE 存储过程名;
八、修改存储过程
使用ALTER 语句修改创建存储过程时定义的特性
ALTER PROCEDURE 存储过程名 [特性……] ;
经验
九、删除存储过程
使用DROP 语句删除已创建的存储过程
DROP PROCEDURE 存储过程名;
删除已创建的存储过程tient

drop procedure if exists;
注意:
十、存储过程的控制语句
与Java语言的流程控制语句类似,MySQL提供的控制语句
条件语句
IF–ELSE条件语句
CASE条件语句
循环语句
WHILE循环
LOOP循环
循环
迭代语句
十一、IF–ELSE条件语句
语法:
IF 条件 THEN 语句列表
[ELSEIF 条件 THEN 语句列表]
[ELSE 语句列表]
END IF;
十二、CASE条件语句
语法1:
CASE
WHEN 条件 THEN 语句列表
[WHEN 条件 THEN 语句列表]
[ELSE 语句列表]
END CASE;
语法2:
CASE 列名
WHEN 条件值 THEN 语句列表
[WHEN 条件值 THEN 语句列表]
[ELSE 语句列表]
END CASE;
注意:在某种情况下(例如,做等值判断),使用第二种写法更加简洁但是,因为CASE后面有列名,功能上会有一些限制
十三、WHILE循环语句
首先判断条件是否成立。如果成立MySQL5.0版本开始支持存储过程,使数据库引擎更加灵活和强大,则执行循环体
[label:] WHILE 条件 DO
语句列表
END WHILE [label]
假设有测试表test,有Id字段、Val字段
根据输入的行数要求MySQL5.0版本开始支持存储过程,使数据库引擎更加灵活和强大,批量插入测试数据
十四、LOOP循环语句
不需判断初始条件,直接执行循环体
[label:] LOOP
语句列表
END LOOP [label] ;
遇到LEAVE语句,退出循环
leave lable
十五、循环语句
先执行循环操作再判断循环条件
#与Java的do-while循环语句类似
[label:] REPEAT
语句列表
UNTIL 条件
END REPEAT [label]
与LOOP循环语句相比较
使用循环语句编码实现
十六、迭代语句
从当前代码处返回到程序块开始位置mysql 存储过程 查询赋值给变量mysql 存储过程 查询赋值给变量,重新执行
ITERATE label;
十七 、本章总结

详细的mysql存储过程参考MySQL 05 存储过程_众生云海mysql 存储过程 查询赋值给变量,一念初见的博客-CSDN博客 存储过程
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299
资源库 - 资源分享下载网 » MySQL5.0版本开始支持存储过程,使数据库引擎更加灵活和强大
常见问题FAQ
- 关于资源售价和售后服务的说明?
- 代码有没有售后服务和技术支持?
- 有没有搭建服务?
- 链接地址失效了怎么办?
- 关于解压密码

