MySQL 函数是一种存储在数据库中的程序,它可以执行一系列操作并返回一个值。MySQL 支持多种类型的函数,包括标量函数、内联表值函数和多语句表值函数。下面我将详细介绍如何编写这些函数,并提供一些示例代码。
标量函数返回单个值。其基本语法如下:
CREATE FUNCTION function_name (parameter_list)
RETURNS data_type
[characteristic ...]
BEGIN
-- SQL statements
END;示例: 创建一个计算两个数之和的标量函数。
DELIMITER //
CREATE FUNCTION AddNumbers(a INT, b INT)
RETURNS INT
DETERMINISTIC
BEGIN
RETURN a + b;
END;
//
DELIMITER ;调用该函数:
SELECT AddNumbers(3, 5); -- 返回 8内联表值函数返回一个表。其基本语法如下:
CREATE FUNCTION function_name (parameter_list)
RETURNS TABLE
[column_definition ...]
[characteristic ...]
RETURN [expression];示例: 创建一个返回员工信息的表值函数。
DELIMITER //
CREATE FUNCTION GetEmployeesByDepartment(department_id INT)
RETURNS TABLE
(
employee_id INT,
employee_name VARCHAR(255),
department_name VARCHAR(255)
)
DETERMINISTIC
RETURN
(
SELECT e.employee_id, e.employee_name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id
WHERE e.department_id = department_id
);
//
DELIMITER ;调用该函数:
SELECT * FROM GetEmployeesByDepartment(1);多语句表值函数也返回一个表,但它允许在函数体内使用多个 SQL 语句。其基本语法如下:
CREATE FUNCTION function_name (parameter_list)
RETURNS @return_table TABLE (column_definition ...)
[characteristic ...]
BEGIN
-- SQL statements
END;示例: 创建一个返回员工薪资信息的表值函数。
DELIMITER //
CREATE FUNCTION GetEmployeeSalaries()
RETURNS @employee_salaries TABLE
(
employee_id INT,
salary DECIMAL(10, 2)
)
DETERMINISTIC
BEGIN
INSERT INTO @employee_salaries (employee_id, salary)
SELECT employee_id, salary FROM salaries;
RETURN;
END;
//
DELIMITER ;调用该函数:
SELECT * FROM GetEmployeeSalaries();通过以上介绍和示例代码,你应该能够编写和使用 MySQL 函数了。如果遇到具体问题,可以参考官方文档或进一步咨询。