mysql存储过程是数据库中的一组预编译 SQL 语句。存储过程通常用于封装复杂的操作逻辑,简化应用程序和数据库之间的交互。存储过程支持输入参数、输出参数和返回值,可以包含控制流语句(如条件判断、循环等),用于实现复杂的业务逻辑。
存储过程
# 简易模型
CREATE PROCEDURE procedure_name ([parameters])
BEGIN
-- SQL statements
END;
procedure_name: 存储过程的名称
parameters: 输入、输出参数列表(可选)
BEGIN ... END: 存储过程的主体部分,包含 SQL 语句。
# 存储过程支持三种类型的参数:
IN:输入参数。
OUT:输出参数。
INOUT:输入输出参数。
示例:
DELIMITER $$
CREATE PROCEDURE GetEmployeeDetails(
IN emp_id INT, -- 输入参数
OUT emp_name VARCHAR(100), -- 输出参数
OUT emp_salary DECIMAL(10,2) -- 输出参数
)
BEGIN
SELECT name, salary
INTO emp_name, emp_salary
FROM employees
WHERE employee_id = emp_id;
END $$
DELIMITER ;
调用
CALL GetEmployeeDetails(1001, @name, @salary);
SELECT @name, @salary;
流程控制示例:
DELIMITER $$
CREATE PROCEDURE CheckSalary(IN emp_id INT)
BEGIN
DECLARE emp_salary DECIMAL(10,2);
SELECT salary INTO emp_salary
FROM employees
WHERE employee_id = emp_id;
IF emp_salary > 10000 THEN
SELECT 'Salary is high' AS Message;
ELSE
SELECT 'Salary is normal' AS Message;
END IF;
END $$
DELIMITER ;
删除存储过程
DROP PROCEDURE procedure_name;