我想创建一个简单的 MySQL 函数,我有这个 MySQL 程序:
CREATE PROCEDURE getUser(gU INT)
SELECT * FROM Company
WHERE id_number = gU;
CALL getUser(2);
我需要一些帮助才能把它变成一个 MySQL 函数。在过程中使用函数的优缺点是什么?
我想创建一个简单的 MySQL 函数,我有这个 MySQL 程序:
CREATE PROCEDURE getUser(gU INT)
SELECT * FROM Company
WHERE id_number = gU;
CALL getUser(2);
我需要一些帮助才能把它变成一个 MySQL 函数。在过程中使用函数的优缺点是什么?
这是一个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;//
打开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 返回的每一行运行该函数。
尝试CREATE FUNCTION F_TEST(PID INT) RETURNS VARCHAR
将此部分更改为
CREATE FUNCTION F_TEST(PID INT) RETURNS TEXT
并更改以下行。
DECLARE NAME_FOUND TEXT DEFAULT "";
它应该工作。