MySQL学习:
MySQL存储过程
1.什么是存储过程?
简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。
2.为什么使用存储过程?
- 通过把处理封装在容易使用的单元中,简化复杂的操作。
- 批量处理,简化对变动的管理。
- 统一接口,确保了数据的安全。
3.存储过程的使用
- 创建存储过程
--使用无参
CREATE PROCEDURE 函数名()
BEGIN
语句;
END;
--使用有参
CREATE PROCEDURE 函数名(参数1,参数2...)
BEGIN
语句;
END;
OUT输出参数:从存储过程中传出。
CREATE PROCEDURE func(
OUT c int,
OUT m int,
OUT e int
)
BEGIN
SELECT MAX(Chinese) INTO c FROM students;
SELECT MAX(math) INTO m FROM students;
SELECT MAX(English) INTO e FROM students;
END;
--执行
CALL func(@A,@B,@C);
--输出数据
SELECT @A,@B,@C;
IN输入参数:传递给存储过程。
CREATE PROCEDURE func (
IN p int
)
BEGIN
SELECT p;
END;
SET @p = 20;
CALL func(@p);
INOUT输入输出参数:对存储过程传入和传出。
CREATE PROCEDURE func (
INOUT p int
)
BEGIN
SELECT p;
END;
SET @p = 20;
CALL func(@p);
SELECT @p;
如果在MySQL命令行中执行,要用下面这种形式:
mysql> delimiter //
mysql> CREATE PROCEDURE 函数名()
-> BEGIN
-> 语句;
-> END//
mysql> delimiter;
- 调用存储过程
CALL 函数名();
- 删除存储过程
DROP PROCEDURE 函数名;
仅当存在时删除(如果过程不存在也不会报错),可以使用 DROP PROCEDURE IF EXISTS 函数名语句。
DROP PROCEDURE IF EXISTS 函数名;
- 检查存储过程
SHOW CREATE PROCEDURE 函数名;
可以限制过程状态结果,使用 SHOW PROCEDURE STATUS语句。
SHOW PROCEDURE STATUS LIKE '...';
若有不当之处,欢迎指正!