MySQL 存储过程和函数
- 分隔符
- 存储过程
- 创建存储过程的语法
- 参数列表说明
- 调用存储过程
- 函数
- 创建函数的语法
- 语法说明
- 调用函数
- 查看函数信息
- 删除函数
- 流程控制结构
- 分支结构
- IF函数
- case结构
- if结构
- 循环结构
- while
- loop
- repeat
- 循环控制
分隔符
MySQL的分隔符告诉MySQL解释器该命令是否已经结束,是否可以执行;
MySQL默认的分隔符是英文分号;
有时候我们需要一次性执行较多的语句且包含分号,如存储过程和函数,这时,我们需要自定义分隔符;
自定义分隔符方式如下:
DELIMITER <分隔符符号>注意:定义了分隔符之后,语句的结束需要使用此分隔符,默认的分号已无效。
存储过程
创建存储过程的语法
CREATE PROCEDURE <存储过程名>(参数列表)
BEGIN
...
END;参数列表说明
每个参数的元素构成:
参数模式 参数名 参数类型
参数模式:
IN:此参数作为输入参数;
OUT:此参数作为返回值;
INOUT:此参数既可以是输入参数也可以是返回值。调用存储过程
CALL <存储过程名>(实参列表);函数
创建函数的语法
CREATE FUNCTION <函数名>(形参列表) RETURNS <返回类型>
BEGIN
...
END <分隔符>语法说明
- 形参格式:形参名 形参类型
- 函数必须有且仅有一个返回值
- 函数体内必须有一个return语句
调用函数
SELECT <函数名>(实参列表);查看函数信息
SHOW CREATE FUNCTION <函数名>;删除函数
DROP FUNCTION <函数名>;流程控制结构
分支结构
IF函数
IF(条件判断,expr1,expr2);条件判断为true,则返回expr1,否则返回expr2.
case结构
- 语法结构1:
CASE 字段|变量名|表达式
WHEN 值1 THEN 语句1;
WHEN 值2 THEN 语句2;
...
ELSE 语句n;
END CASE;- 语法结构2:
CASE
WHEN 条件判断1 THEN 语句1;
WHEN 条件判断2 THEN 语句2;
...
ELSE 语句n;
END CASE;语法结构1主要用于枚举值得判断,语法结构2主要用于区间判断。
if结构
语法结构:
IF 条件 THEN 语句1;
ELSEIF 条件2 THEN 语句2;
...
ELSE 语句n;
END IF;循环结构
while
语法结构:
[标签名:]WHILE 循环条件 DO
循环体
END WHILE[标签名];loop
语法结构:
[标签名:]LOOP
循环体
END LOOP[标签名];repeat
语法结构:
[标签名:]REPEAT
循环体
UNTIL 结束条件
END REPEAT[标签名];循环控制
- 跳出本次循环,继续下一次循环
ITERATE <标签名>;- 跳出整个循环
LEAVE <标签名>;
















