如何创建一个简单的MySQL函数?


您可以使用 create function 命令创建函数。语法如下:

delimiter //
DROP FUNCTION if exists yourFunctionName;
CREATE FUNCTION yourFunctionName(Parameter1,...N) returns type
BEGIN
# declaring variables;
# MySQL statementns
END //
delimiter ;

首先,我们将创建一个表并在表中添加一些记录。之后,将创建一个简单的函数。以下是创建表的查询:

mysql> create table ViewDemo
   −> (
   −> Id int,
   −> Name varchar(200),
   −> Age int
   −> );
Query OK, 0 rows affected (0.58 sec)

使用 insert 命令在表中插入记录。查询如下:

mysql> insert into ViewDemo values(1,'John',23);
Query OK, 1 row affected (0.15 sec)

mysql> insert into ViewDemo values(2,'Sam',24);
Query OK, 1 row affected (0.15 sec)

使用 select 语句显示表中的所有记录。查询如下:

mysql> select *from ViewDemo;

以下是输出:

+------+------+------+
| Id   | Name | Age  |
+------+------+------+
|    1 | John | 23   |
|    2 | Sam  | 24   |
+------+------+------+
2 rows in set (0.00 sec)

现在我们将创建一个函数,该函数接收一个整数参数并返回字符串。此函数的目的是搜索具有给定 ID 的记录。如果给定的 ID 与表 ID 匹配,则返回名称,否则将显示“未找到”之类的错误消息。

函数如下:

mysql> SET GLOBAL log_bin_trust_function_creators = 1;
Query OK, 0 rows affected (0.00 sec)
mysql> drop function if exists searchRecord;
   ->
   -> create function searchRecord(yourId int) returns char(100)
   -> begin
   -> declare Name1 char(100) default "No Name Found For This Id";
   -> select Name into Name1 from ViewDemo where Id =yourId;
   -> return Name1;
   -> end //
Query OK, 0 rows affected (0.21 sec)
Query OK, 0 rows affected (0.33 sec)
mysql> delimiter ;

现在检查函数是否可以使用给定 ID 工作。

**情况 1** - 给定 ID 存在。

查询如下:

mysql> select searchRecord(2) as Found;

以下是输出:

+-------+
| Found |
+-------+
| Sam   |
+-------+
1 row in set (0.00 sec)

**情况 2** - 给定 ID 不存在。

查询如下:

mysql> select searchRecord(100) as Found;

以下是显示记录不存在的输出:

+---------------------------+
| Found                     |
+---------------------------+
| No Name Found For This Id |
+---------------------------+
1 row in set (0.00 sec)

更新于: 2019年7月30日

525 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告