MySQL, создайте простую функцию
Я хочу создать простую функцию MySQL, у меня есть эта процедура MySQL:
CREATE PROCEDURE getUser(gU INT)
SELECT * FROM Company
WHERE id_number = gU;
CALL getUser(2);
Мне нужна помощь, чтобы сделать это в функции MySQL. Каковы преимущества и недостатки использования функции над процедурой?
Ответы
Ответ 1
это пример функции 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;//
Ответ 2
Пример функции MySQL:
Откройте терминал mysql:
[email protected]:~$ 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.
Ответ 3
Попробуйте изменить CREATE FUNCTION F_TEST(PID INT) RETURNS VARCHAR
эту часть на
CREATE FUNCTION F_TEST(PID INT) RETURNS TEXT
и также измените следующую строку.
DECLARE NAME_FOUND TEXT DEFAULT "";
Он должен работать.