PL- SQL - Могу ли я передать enum в качестве аргумента функции? - PullRequest
1 голос
/ 25 февраля 2020

В моей таблице есть поле / столбец с именем 'type' с типом данных enum, я буду sh использовать аналогичный тип параметра для моей функции PL- SQL.

Могу ли я передать enum в качестве аргумента функции?

Я пробовал следующую функцию (для mySQL), но она принимает enum в качестве аргумента / параметра функции.

CREATE FUNCTION `save_type` (type('new', 'existing', 'xyz') IN enum)

RETURNS INTEGER
BEGIN

RETURN 1;
END

Ответы [ 2 ]

1 голос
/ 25 февраля 2020

Вы можете использовать тип ENUM для параметра функции, но у вас неправильный синтаксис для MySQL.

Это работает:

CREATE FUNCTION `save_type` (type enum('new', 'existing', 'xyz'))

RETURNS INTEGER
DETERMINISTIC
BEGIN

RETURN 1;
END

Различия:

  • Список значений перечисления после ключевого слова enum.
  • Для параметра IN и OUT нет опции для MySQL сохраненных функций.
  • Функции должен быть объявлен с одним из DETERMINISTIC, NO SQL или READS SQL DATA.
1 голос
/ 25 февраля 2020

Параметры функции должны иметь типы данных MySQL. ENUM не поддерживается.

Хотел бы порекомендовать вообще избегать ENUM. Для удобочитаемых значений используйте отдельную таблицу, чтобы при необходимости их можно было изменить позже, без особых хлопот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...