MySql存储过程与函数详解

2019-01-04 21:51:50刘景俊

调用过程:

//调用并输出结果 CALL SP_SCHOLARSHIP_LEVEL('A');

Case 语句
表达形式1

Case case_value When when_value then statement_list [When when_value then statement_list]… [else statement_list] End case

表达形式2

Case When search_condition then statement_list End case

使用范例

CREATE PROCEDURE SP_SCHOLARSHIP_LEVEL3(IN p_level char(1)) BEGIN DECLARE p_num int DEFAULT 0; CASE p_level WHEN 'A' THEN SET p_num=90; WHEN 'B' THEN SET p_num=80; WHEN 'C' THEN SET p_num=70; WHEN 'D' THEN SET p_num=60; ELSE SET p_num=0; END CASE; SELECT * FROM t_grade g, t_student s WHERE g.STU_ID=s.STU_ID AND g.STU_SCORE >= p_num ; END

调用:

//调用并输出结果 CALL SP_SCHOLARSHIP_LEVEL3('d');

(2)循环语句
While语句、repeat语句和loop语句。
While语句

[begin_label:] while search_condition do Statement_list End while [end_label]

 判断条件search_condition是否为真,若为真,则执行statement_list中的语句,然后再进行判断,如若仍然为真则继续循环,直至条件判断不为真时循环结束。
使用范例

//带while的存储过程 CREATE PROCEDURE sp_cal(IN p_num INT,OUT p_result INT) BEGIN SET p_result=1; WHILE p_num > 1 DO SET p_result = p_num * p_result; SET p_num = p_num-1; END WHILE; END //调用并输出结果 CALL sp_cal(5,@result); SELECT @result;

输出结果:计算5!

Repeat语句语法格式

[begin_label:] repeat Statement_list Until search_condition End repeat [end_label]

Repeat语句首先执行statement_list中的语句,然后判断条件search_condition是否为真,倘若为真,则结束循环,若不为真,继续循环。
Repeat先执行后判断,while先判断后执行。
使用范例:

//带repeat的存储过程 CREATE PROCEDURE sp_cal2(IN p_num INT,OUT p_result INT) BEGIN SET p_result=1; REPEAT SET p_result = p_num * p_result; SET p_num = p_num-1; UNTIL p_num<=1 END REPEAT; END //调用并输出结果 CALL sp_cal2(5,@result); SELECT @result;