1. 存储过程
存储过程是 SQL 语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理。
存储过程的优点:
- 增强 SQL 语句的功能和灵活性
- 实现较快的执行速度
- 减少网络流量
1.1 创建
创建存储过程语法:
CREATE [DEFINER = {
user|CURRENT_USER}] PROCEDURE sp_name ([proc_parameter[,...]]) [characteristic ...] routine_body
proc_parameter:[IN|OUT|INOUT] param_name type
参数
IN: 表示该参数的值必须在调用存储过程时指定;
OUT: 表示该参数的值可以被存储过程改变,并且可以返回;
INOUT: 表示该参数的值调用时指定,并且可以被改变和返回。
PS: 和创建函数类似。
过程体特点:
- 过程体由合法的 SQL 语句组成;
- 过程体可以是任意 SQL 语句;
- 过程体如果为复合结构则使用 BEGIN…END 语句;
- 复合结构可以包含声明,循环,控制结构。
例如创建一个无参的存储过程:
mysql> CREATE PROCEDURE sp1() SELECT VERSION;
这里将 SELECT VERSION;
作为一个存储过程。
1.2 调用
调用存储过程的语法:
含参:CALL sp_name([parameter[,...]])
无参:CALL sp_name[()]
例如,调用上面创建的无参存储过程 sp1:mysql> CALL sp1;
效果如下:
1.3 删除
删除存储过程 sp1:mysql> DROP PROCED