一、存储过程
1.1 概述
存储过程可以轻松而高效的去完成这个需求,有点类似shell脚本里的函数
1.2 特点
- 存储过程在数据库中创建并保存,它不仅仅是 SQL 语句的集合,还可以加入一些特殊的控制结构,也可以控制数据的访问方式。
- 存储过程的应用范围很广,例如封装特定的功能、 在不同的应用程序或平台上执行相同的函数等等。
1.3 优点
- 执行一次后,会将生成的二进制代码驻留缓冲区(提高执行效率)
- 灵活性高
- 降低网络负载
- 可多次重复被调用,可随时修改,不影响客户端调用(独立性强)
- 可完成所有的数据库操作,也可控制数据库的信息访问权限(控制级别高)
1.4 语法
CREATE PROCEDURE <过程名> ( [过程参数[,…] ] ) <过程体>
[过程参数[,…] ] 格式
<过程名>:尽量避免与内置的函数或字段重名
<过程体>:语句
[ IN | OUT | INOUT ] <参数名><类型>
解释:
存储过程的主体都分,被称为过程体
以BEGIN开始,以END结束,若只有一条sQL语句,则可以省略BEGIN-END
以DELIMITER开始和结束
mysgl>DEL工M工TER $$ $$是用户自定义的结束符
省略存储过程其他步骤
mysql>DELIMITER ; 分号前有空格
1.5 查看存储过程
语法:SHOW CREATE PROCEDURE [数据库.]存储过程名; //查看某个存储过程的具体信息
1.5.1 查看指定存储过程信息
举例:
1.6 存储过程的参数
IN 输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)
OUT 输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)
INOUT 输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)即表示调用者向过程传入值,又表示过程向调用者传出值(只能是变量)
1.7 修改存储过程
ALTER PROCEDURE <过程名>[<特征>... ]
ALTER PROCEDURE GetRole MODIFIES SQL DATA SQL SECURITY INVOKER;
MODIFIES sQLDATA:表明子程序包含写数据的语句
SECURITY:安全等级
invoker:当定义为INVOKER时,只要执行者有执行权限,就可以成功执行。
1.8 删除存储过程
存储过程内容的修改方法是通过删除原有存储过程,之后再以相同的名称创建新的存储过程。
DROP PROCEDURE IF EXISTS Proc;