1、控制语句的概念和函数模板代码
控制语句的概念
- 控制语句
用来实现对程序流程的选择、循环、转向和返回等进行控制(IF、CASE、LOOP、WHILE、LEAVE、ITERATE、REPEAT)
- 分类
选择语句
循环语句
转向语句
返回语句
--创建函数
delimiter //
DROP FUNCTION IF EXISTS fun_name;
CREATE FUNCTION fun_name()
RETURNS VARCHAR(20)
BEGIN
RETURN 'Hello';
END //
delimiter;
--调用函数
SELECT fun_name();
2、IF分支控制语句
IF语句
- IF语句可以进行条件判断,根据是否满足条件,将执行不同的分支语句
- IF search_condition THEN statement_list
[ELSEIF search_condition THEN statement_list]
...
[ELSE statement_list]
END IF
search_condition参数表示条件判断语句
statement_list参数表示不同条件的执行语句
eg:
1)创建函数
-- 1:IF
-- 传入一个memberId,返回会员是否是土豪(>40000)、无产(<10000)、中产(10000<X<40000)
delimiter //
DROP FUNCTION IF EXISTS f_is_tuhao;
CREATE FUNCTION f_is_tuhao(memberId INT)
RETURNS VARCHAR(20)
BEGIN
-- 定义msg保存输出信息
DECLARE _msg VARCHAR(20);
-- 定义一个局部变量保存查询出来的该会员的余额
DECLARE _amount DECIMAL(18,2);
-- 查询出来的该会员的余额,保存到局部变量_amount中
SELECT leaveAmount INTO _amount FROM member WHERE id=memberId;
-- 通过IF分支结构对局部变量_amount进行判断
IF _amount<10000 THEN
SET _msg = '我是无产阶级';
ELSEIF _amount>=10000 AND _amount<40000 THEN
SET _msg = '我是中产阶级';
ELSE
SET _msg = '我是土豪';
END IF;
RETURN _msg;
END//
delimiter;
2)调用函数
select f_is_tuhao(1);
3、CASE语句
- 条件判断语句,可以实现比IF语句更复杂的条件判断
- 语法1:
CASE case_value
WHEN when_value THEN statement_list
[WHEN when_value THEN statement_list]...
[ELSE statement_list]
END CASE
case_value参数表示条件判断的变量
when_value参数表示变量的取值
statement_list参数表示不同when_value值的执行语句
eg:
1)创建函数:
-- 创建一个函数,传入一个memberId,返回用户的类型(1:普通 2:内部 其他)
delimiter //
DROP FUNCTION IF EXISTS f_get_member_type_msg;
CREATE FUNCTION f_get_member_type_msg(memberId INT)
RETURNS VARCHAR(20)
BEGIN
DECLARE _msg VARCHAR(20);
DECLARE _type TINYINT;
SELECT type INTO _type FROM member WHERE id = memberId;
-- 判断
CASE _type
WHEN 1 THEN SET _msg = '普通用户';
WHEN 2 THEN SET _msg = '内部用户';
ELSE SET _msg = '其他用户';
END CASE;
RETURN _msg;
END //
delimiter;
2)调用函数:
SELECT f_get_member_type_msg(3);
- 语法2:
CASE
WHEN search_condition THEN statement_list
[WHEN search_condition THEN statement_list]...
[ELSE statement_list]
END CASE
eg:
1)创建函数:
-- 1:CASE
-- 传入一个memberId,返回会员是否是土豪(>40000)、无产(<10000)、中产(10000<X<40000)
delimiter //
DROP FUNCTION IF EXISTS f_is_tuhao_case;
CREATE FUNCTION f_is_tuhao_case(memberId INT)
RETURNS VARCHAR(20)
BEGIN
-- 定义msg保存输出信息
DECLARE _msg VARCHAR(20);
-- 定义一个局部变量保存查询出来的该会员的余额
DECLARE _amount DECIMAL(18,2);
-- 查询出来的该会员的余额,保存到局部变量_amount中
SELECT leaveAmount INTO _amount FROM member WHERE id=memberId;
-- case的条件判断、分支控制
CASE
WHEN _amount>=40000 THEN SET _msg='我是土豪';
WHEN _amount>=10000 AND _amount<=40000 THEN SET _msg='我是中产';
ELSE SET _msg='我是无产';
END CASE;
RETURN _msg;
END//
delimiter;
2)调用函数:
SELECT f_is_tuhao_case(4);
4、LOOP循环控制语句
- 循环控制结构
- 用来重复执行某段算法
- 减少代码重复书写工作量
- 三要素:
循环变量:相当于开始和结束循环的一个信号
循环体:循环处理的逻辑语句
循环终止条件:合适的时候结束循环
LOOP语句
- 循环语句
- 使用LOOP使特定的语句重复执行
- LOOP语句没有停止循环的语句,使用LEAVE才能停止
- 语法:
- [begin_label:] LOOP
statement_list
END LOOP [end_label]
- begin_label
循环开始标志,end_label是循环结束的标志
两个标志必须相同,而且都可以省略
- statement_list
表示需要循环执行的语句
LEAVE语句