41

我想创建一个简单的 MySQL 函数,我有这个 MySQL 程序:

CREATE PROCEDURE getUser(gU INT)
   SELECT * FROM Company
   WHERE id_number = gU;

CALL getUser(2);

我需要一些帮助才能把它变成一个 MySQL 函数。在过程中使用函数的优缺点是什么?

4

3 回答 3

43

这是一个mysql函数示例。我希望它有所帮助。(我还没有测试过,但应该可以)

DROP FUNCTION IF EXISTS F_TEST //
CREATE FUNCTION F_TEST(PID INT) RETURNS VARCHAR
BEGIN
/*DECLARE VALUES YOU MAY NEED, EXAMPLE:
  DECLARE NOM_VAR1 DATATYPE [DEFAULT] VALUE;
  */
  DECLARE NAME_FOUND VARCHAR DEFAULT "";

    SELECT EMPLOYEE_NAME INTO NAME_FOUND FROM TABLE_NAME WHERE ID = PID;
  RETURN NAME_FOUND;
END;//
于 2013-01-30T15:25:20.527 回答
18

MySQL函数示例:

打开mysql终端:

el@apollo:~$ mysql -u root -pthepassword yourdb
mysql>

如果该函数已存在,则删除该函数

mysql> drop function if exists myfunc;
Query OK, 0 rows affected, 1 warning (0.00 sec)

创建函数

mysql> create function hello(id INT)
    -> returns CHAR(50)
    -> return 'foobar';
Query OK, 0 rows affected (0.01 sec)

创建一个简单的表来测试它

mysql> create table yar (id INT);
Query OK, 0 rows affected (0.07 sec)

将三个值插入表 yar

mysql> insert into yar values(5), (7), (9);
Query OK, 3 rows affected (0.04 sec)
Records: 3  Duplicates: 0  Warnings: 0

从 yar 中选择所有值,每次运行我们的函数 hello:

mysql> select id, hello(5) from yar;
+------+----------+
| id   | hello(5) |
+------+----------+
|    5 | foobar   |
|    7 | foobar   |
|    9 | foobar   |
+------+----------+
3 rows in set (0.01 sec)

将刚刚发生的事情用语言表达并内化:

您创建了一个名为 hello 的函数,它接受一个参数。该参数被忽略并返回一个CHAR(50)包含值“foobar”的值。您创建了一个名为 yar 的表并在其中添加了三行。select 语句hello(5)为 yar 返回的每一行运行该函数。

于 2014-03-26T18:45:59.053 回答
-5

尝试CREATE FUNCTION F_TEST(PID INT) RETURNS VARCHAR 将此部分更改为 CREATE FUNCTION F_TEST(PID INT) RETURNS TEXT

并更改以下行。

DECLARE NAME_FOUND TEXT DEFAULT "";

它应该工作。

于 2014-03-10T10:56:56.157 回答