【SQL】之存储过程与函数
存储过程的英文是
Stored Procedure
。它的思想很简单,就是一组经过预先编译的 SQL 语句的封装。
执行过程:存储过程预先存储在 MySQL 服务器上,需要执行的时候,客户端只需要向服务器端发出调用存储过程的命令,服务器端就可以把预先存储好的这一系列 SQL 语句全部执行。
和视图、函数的对比:
它和视图有着同样的优点,清晰、安全,还可以减少网络传输量。不过它和视图不同, 视图是虚拟表,通常不对底层数据表直接操作,而 存储过程是程序化的 SQL, 可以直接操作底层数据表,相比于面向集合的操作方式,能够实现一些更复杂的数据处理。一旦存储过程被创建出来,使用它就像使用函数一样简单,我们直接通过调用存储过程名即可。相较于函数,存储过程是 没有返回值的。
存储过程
类型1:无参数无返回值
-- 类型1:无参数无返回值
#创建存储过程1
DELIMITER $
CREATE PROCEDURE select_all_data()
BEGIN
SELECT * FROM emps;
END $
DELIMITER;
#存储过程1的调用
CALL select_all_data();
#创建存储过程2
DELIMITER //
CREATE PROCEDURE avg_employee_salary()
BEGIN
SELECT AVG(salary) FROM emps;
END //
DELIMITER;
#调用存储过程2
CALL avg_employee_salary();
#创建存储过程3
DELIMITER //
CREATE PROCEDURE show_max_salary()
BEGIN
SELECT MAX(salary) FROM emps;
END //
DELIMITER;
#调用存储过程3
CALL show_max_salary();
类型2:带out
DESC emps;
DELIMITER //
CREATE PROCEDURE show_min_salary(OUT ms DOUBLE)
BEGIN
SELECT MIN