更改存储过程
句型:
ALTER PROCEDURE proc_name [characteristic ...]
characteristic: {
COMMENT "string"
| LANGUAGE SQL
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
}
ALTERPROCEDURE 语句用于更改存储过程的个别特征。 如果要改变存储过程的内容,可以先删除原来的存储过程,然后再新建一个同名的存储过程。
删除存储过程
句型:
DROP PROCEDURE [ IF EXISTS ] proc_name
比如删除student_procedure:
mysql> DROP PROCEDURE student_procedure;
Query OK, 0 rows affected
mysql> CALL student_procedure(38, @num);
1305 - PROCEDURE student_procedure does not exist
流程控制语句IF语句
句型:
IF 判断条件 THEN 处理语句
[ELSEIF 判断条件 THEN 处理语句]...
[ELSE 处理语句]
END IF
例子:
CREATE PROCEDURE test1(IN sex TINYINT)
BEGIN
IF sex=1 THEN SET @sex="男";
ELSEIF sex=0 THEN SET @sex="女";
ELSE SET @sex="未知";
END IF;
END;
CASE语句
CASE语句有两种写法:
句型一:
CASE 值
WHEN 值1 THEN 处理语句
[WHEN 值2 THEN 处理语句]...
[ELSE 处理语句]
END CASE
句型二:
CASE
WHEN 条件判断 THEN 处理语句
[WHEN 条件判断 THEN 处理语句] ...
[ELSE 处理语句]
END CASE
例子:
-- 写法1
CREATE PROCEDURE test2(IN sex TINYINT)
BEGIN
CASE sex
WHEN 1 THEN SET @sex="男";
WHEN 0 THEN SET @sex="女";
ELSE SET @sex="未知";
END CASE;
END;
-- 写法2
CREATE PROCEDURE test3(IN sex TINYINT)
BEGIN
CASE
WHEN sex=1 THEN SET @sex="男";
WHEN sex=0 THEN SET @sex="女";
ELSE SET @sex="未知";
END CASE;
END;
循环句
LOOP 循环是一个无限循环。 通常,它需要与LEAVE语句和ITERATE语句一起使用。 LEAVE语句表示跳出循环(类似于Java中的break),ITERATE语句表示跳出本次循环(类似于Java中的continue)。
句型:
[别名:]LOOP
处理逻辑
END LOOP [别名]
例子:
CREATE PROCEDURE test4()
BEGIN
SET @num=0;
add_num:LOOP
SET @num=@num+1;
IF @num=10 THEN LEAVE add_num;
END IF;
END LOOP add_num;
END;