Подтвердить что ты не робот

MySQL, создайте простую функцию

Я хочу создать простую функцию MySQL, у меня есть эта процедура MySQL:

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

CALL getUser(2);

Мне нужна помощь, чтобы сделать это в функции MySQL. Каковы преимущества и недостатки использования функции над процедурой?

4b9b3361

Ответ 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 "";

Он должен работать.