MySQL 确实支持存储过程(Stored Procedure),这是 MySQL 5.0 版本引入的一项重要功能。
存储过程是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数来调用执行。
DELIMITER //
CREATE PROCEDURE procedure_name([IN|OUT|INOUT] parameter_name parameter_type,...)
BEGIN
-- SQL 语句
END //
DELIMITER ;
CALL procedure_name([parameter,...]);
DROP PROCEDURE [IF EXISTS] procedure_name;
DELIMITER //
CREATE PROCEDURE GetEmployeeCount()
BEGIN
SELECT COUNT(*) FROM employees;
END //
DELIMITER ;
-- 调用
CALL GetEmployeeCount();
DELIMITER //
CREATE PROCEDURE GetEmployeeByDept(IN dept_id INT)
BEGIN
SELECT * FROM employees WHERE department_id = dept_id;
END //
DELIMITER ;
-- 调用
CALL GetEmployeeByDept(10);
DELIMITER //
CREATE PROCEDURE GetEmployeeCountByDept(
IN dept_id INT,
OUT emp_count INT
)
BEGIN
SELECT COUNT(*) INTO emp_count
FROM employees
WHERE department_id = dept_id;
END //
DELIMITER ;
-- 调用
CALL GetEmployeeCountByDept(10, @count);
SELECT @count;
MySQL 存储过程是强大的数据库编程工具,合理使用可以显著提高数据库应用的性能和安全性。