迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MySQL >

在 MySQL 中创建一个函数

作者:迹忆客 最近更新:2023/05/07 浏览次数:

本篇文章介绍了如何在 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 ;

在上面的语法中,我们正在做以下事情。

  1. 重新设置分隔符,使所有语句都不能单独执行。
  2. 在 CREATE FUNCTION 关键字之后写下函数的名称。
  3. 将所有参数写在函数名后的括号内。 我们不能给参数指定名为 INOUT、IN 或 OUT 的修饰符,但它们(所有参数)默认都是 IN 参数。
  4. 写入有效的返回数据类型。
  5. 指定函数是否使用/不使用 DETERMINISTIC。 如果我们不写 NOT DETERMINISTIC/DETERMINISTIC 关键字,MySQL 服务器将使用 NOT DETERMINISTIC。
  6. 在 BEGIN 和 END 块之间编写主要代码。 在函数体中,我们至少需要写一条 RETURN 语句。
  7. 最后,将分隔符更改为其默认值 ;。

让我们准备一个名为 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)

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 MySQL 中声明和使用变量

发布时间:2024/03/26 浏览次数:115 分类:MySQL

当你需要在 MySQL 中的脚本中存储单个值时,最好的方法是使用变量。变量有不同的种类,有必要知道何时以及如何使用每种类型。

在 MySQL 中实现刷新权限

发布时间:2024/03/26 浏览次数:211 分类:MySQL

本教程介绍了 MySQL 中的刷新权限命令,用于刷新授权表并影响允许的更改。

在 MySQL 中设置时区

发布时间:2024/03/26 浏览次数:93 分类:MySQL

在本教程中,我们将学习如何在 MySQL 服务器中更改时区。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便