在 MySQL 中创建一个函数
本篇文章介绍了如何在 MySQL 中创建函数。 它首先解释语法,然后使用示例表创建一个函数。
在 MySQL 中创建一个函数
我们可以向其传递一个或多个参数并获得返回值的存储程序称为函数。 它有一组SQL语句来完成一些任务并输出一个值。
以下是创建 MySQL 函数的语法。
CREATE FUNCTION functionName(parameter1, parameter2, ..)
RETURN dataType [characteristics]
function_body
这里,function_body 包含了完成一个操作或任务的SQL语句。 它的结构如下所示。
BEGIN
MySQL Statements
RETURN Expression
END
这是创建函数的完整语法。
DELIMITER ;;
CREATE FUNCTION functionName(parameter1,parameter2,…)
RETURNS datatype
[NOT] DETERMINISTIC
BEGIN
MySQL Statements
RETURN Expression
END ;;
DELIMITER ;
在上面的语法中,我们正在做以下事情。
- 重新设置分隔符,使所有语句都不能单独执行。
- 在 CREATE FUNCTION 关键字之后写下函数的名称。
- 将所有参数写在函数名后的括号内。 我们不能给参数指定名为 INOUT、IN 或 OUT 的修饰符,但它们(所有参数)默认都是 IN 参数。
- 写入有效的返回数据类型。
- 指定函数是否使用/不使用 DETERMINISTIC。 如果我们不写 NOT DETERMINISTIC/DETERMINISTIC 关键字,MySQL 服务器将使用 NOT DETERMINISTIC。
- 在 BEGIN 和 END 块之间编写主要代码。 在函数体中,我们至少需要写一条 RETURN 语句。
- 最后,将分隔符更改为其默认值 ;。
让我们准备一个名为 users 的表,它有两个属性,ID 和 CREDIT,其中 ID 是主键。 以下查询可用于创建和填充用户表。
示例代码:
# create a table
CREATE TABLE users (
ID INT NOT NULL AUTO_INCREMENT,
CREDIT INT NOT NULL,
PRIMARY KEY (id)
);
# insert data
INSERT INTO users (CREDIT) VALUES (5000);
INSERT INTO users (CREDIT) VALUES (4000);
INSERT INTO users (CREDIT) VALUES (3000);
INSERT INTO users (CREDIT) VALUES(1000);
# display data
SELECT * FROM users;
输出:
+----+--------+
| ID | CREDIT |
+----+--------+
| 1 | 5000 |
| 2 | 4000 |
| 3 | 3000 |
| 4 | 1000 |
+----+--------+
4 rows in set (0.00 sec)
我们编写以下函数来根据 CREDIT 决定 userLevel。 请参阅下面给出的代码示例。
示例代码:
DELIMITER ;;
CREATE FUNCTION UserLevels(
credit DECIMAL(10,2)
)
RETURNS VARCHAR(20)
DETERMINISTIC
BEGIN
DECLARE userLevel VARCHAR(20);
IF credit >= 5000 THEN
SET userLevel = 'PLATINUM';
ELSEIF (credit >= 4000 AND
credit < 5000) THEN
SET userLevel = 'GOLD';
ELSEIF (credit > 1000 AND credit < 4000 ) THEN
SET userLevel = 'SILVER';
ELSE
SET userLevel = 'BASIC';
END IF;
RETURN (userLevel);
END;;
DELIMITER ;
创建函数后,使用以下查询调用该函数。
SELECT ID,CREDIT, UserLevels(CREDIT) AS USER_LEVEL
FROM users;
输出:
+----+--------+------------+
| ID | CREDIT | USER_LEVEL |
+----+--------+------------+
| 1 | 5000 | PLATINUM |
| 2 | 4000 | GOLD |
| 3 | 3000 | SILVER |
| 4 | 1000 | BASIC |
+----+--------+------------+
4 rows in set (0.06 sec)
相关文章
如何在 MySQL 中声明和使用变量
发布时间:2024/03/26 浏览次数:115 分类:MySQL
-
当你需要在 MySQL 中的脚本中存储单个值时,最好的方法是使用变量。变量有不同的种类,有必要知道何时以及如何使用每种类型。
在 MySQL 中使用 Mysqladmin 刷新主机解除阻塞
发布时间:2024/03/26 浏览次数:82 分类:MySQL
-
你将了解阻止主机的原因。此外,通过使用 phpMyAdmin 和命令提示符刷新主机缓存来解除阻塞的不同方法和效果。