存储过程介绍:存储过程就是一条或多条的SQL语句的集合,可以理解为批文件
存储程序:存储过程 和 函数
存储过程和函数的区别:
本质上都是存储程序,函数只能通过return语句返回单个值或表对象,而存储过程不允许执行return语句,而且可以通过out参数返回多个值,函数不能用临时表,只能用变量,函数可以在sql语句中执行,而存储过程是独立的
创建存储过程:CREATE PROCEDURE
调用存储过程:CALL语句,只能输出变量返回值,存储过程可以调用其他存储过程
例子:CREATE PROCEDURE my_proc()
BEGIN
SELECT * FROM book;
END;
创建函数:CREATE FUNCTION,
调用函数:SELECT func();
定义变量:DECLARE num int DEFAULT 9;
给变量赋值:SET num=9;
定义条件:DECLARE aa CONDITION FOR SQLSTATE ‘42000’;
SQLSTATE代表的是mysql的错误
声明光标:DECLARE cursor_name CURSOR FOR select_stament;
打开光标:OPEN cursor_name;
使用光标:FETCH cursor_name INTO var_name;
var_name :表示将光标查询的数据放入var_name中;
关闭光标:CLOSE cursor_fruit;
流程控制:
IF语句:
IF bl
THEN …….;
ELSE ……..;
END IF;
CASE语句:
CASE a
WHEN ….. THEN …… ;
WHEN …… THEN …….. ;
ELSE ……….;
END CASE;
LOOP语句(重复执行某些语句):
loop_name : LOOP
SET bl = true;
IF bl THEN LEAVE loop_name;
END IF;
END LOOP loop_name;
LEAVE :表示退出被标注的流程构造;
ITERATE:将执行顺序转到语句开头处
ITERATE….. UNTIL 条件 END ITERATE
REPEAT:每次都是带条件执行,直到为真,否则重复执行
REPEAT ….. UNTIL 条件 END REPEAT
WHILE:每次带条件执行,和REPEAT不通之处是第一次执行时会判断是否为TRUE;
WHILE … DO …. END WHILE;
查看存储过程;SHOW CREATE PROCEDURE proc_name;
查看函数:SHOW CREATE FUNCTION func_name;
删除存储过程:DROP PROCEDURE proc_name;
删除函数:DROP FUNCTION func_nmae;