MySQL,创建一个简单的功能

时间:2013-01-30 14:56:12

标签: mysql function stored-procedures

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

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

CALL getUser(2);

我需要一些帮助才能将其变成MySQL函数。在程序中使用函数有什么优缺点?

3 个答案:

答案 0 :(得分:35)

这是一个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;//

答案 1 :(得分:12)

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)

在表格中插入三个值

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),其中包含值&foffar'。您创建了一个名为yar的表,并为其添加了三行。 select语句为yar返回的每一行运行函数hello(5)

答案 2 :(得分:-5)

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

并更改以下行。

DECLARE NAME_FOUND TEXT DEFAULT "";

它应该有用。