创建自定义函数
语法格式:
CREATE FUNCTION function_name([func_parameter])
RETURNS type
[characteristics … ] routine_body
- function_name : 函数名称
- func_parameter : 函数的参数列表(格式:参数名称 参数类型 param_name type)
- RETURNS type : 指定返回值的类型
- Characteristics指定存储函数的特性,取值举例:
- SQL SECURITY{DEFINER | INVOKER} : 指明谁有权限来执行
- DEFINER : 表示只有定义者才能执行
- INVOKER :表示拥有权限的调用者才可以执行,默认情况下,系统指定为DEFINER
- COMMENT ‘string’ : 注释信息,可以用来描述存储函数
- routine_body : 函数体
- 函数体是由SQL代码构成
- 函数体可以是简单的SQL语句,比如:简单的查询语句
- 函数体如果为复合结构需要使用BEGIN … END语句
- 复合结构可以包含声明、流程控制
创建无参的自定义函数
需求:创建一个返回系统日期的函数,日期格式为“xxxx年xx月xx日”
创建有参的自定义函数
*需求:创建一个函数,根据图书ID,返回书名和库存的字符串信息。格式为“书名—库存”
删除自定义函数
- 删除存储过程函数和函数,可以使用DROP语句,语法为:
DROP FUNCTION [IF EXISTS] func_name;
流程控制的使用
- 流程控制语句是用来根据条件控制语句的执行
- 常用的流程控制语句:
- IF条件判断语句
- CASE条件判断语句
- WHILE循环语句
- LOOP循环语句
- REPEAT循环语句
IF条件判断语句
- IF语句包含多个条件判断,根据判断的结果为TRUE或FALSE执行相应的语句
- 语法格式:
IF condition THEN
…
[ELSEIF condition THEN]
…
[ELSE]
…
END IF;
需求:查询读者信息表,根据用户的余额判断用户的会员级别
1、根据身份证号查询用户的余额
2、当用户的余额大于等于500时为金牌会员
3、当用户的余额大于等于300时为高级会员
4、当用户的余额大于等于200时为普通会员
5、小于200元,不能借书,显示“非会员,余额不足”
CASE条件判断语句
- 分支语句(另一种条件判断语句)
- 该语句有两种语句格式:
- 格式1:
CASE case_expr
WHERE where_value1 THEN statement_list;
[WHERE where_value2 THEN statement_list;]
…
[ELSE statement_list;]
END CASE;
- 格式2:
CASE
WHERE expr_condition THEN statement_list;
[WHERE expr_condition THEN statement_list;]
…
[ELSE statement_list]
END CASE
WHILE循环语句
- 判断循环条件,满足条件执行循环体,否则退出
- 语法格式:
[while_label:] WHILE condition DO
…
END WHILE [while_label];
LOOP循环语句
- 该循环没有内置循环条件,但可以通过leave语句退出循环
- 语法格式:
[loop_label:] LOOP
statement_list;
END LOOP [loop_label];
- leave语句用来跳出循环,语法格式如下:
- Leave label
REPEAT循环语句
- 该语句执行一次循环体,之后判断condition条件是否为真,为真则退出循环,否则继续执行循环体
- 语法格式:
[repeat_label:] REPEAT
…
UNTIL expr_condition
EDN REPEAT [repeat_label];