Как передать переменную ENUM в качестве ввода для функций POSTGRESQL - PullRequest
0 голосов
/ 04 февраля 2020

У меня есть функция в MySQL, которая прекрасно работает:

CREATE  PROCEDURE `Accounts_Active`(IN_DeptName VARCHAR(255), IN_Src ENUM('TRAINING','ELZA'))
BEGIN
END$$
DELIMITER ;

Но при преобразовании в PostgreSQL:

CREATE or replace FUNCTION Accounts_Active(IN_DeptName VARCHAR(255), IN_Src ENUM('TRAINING','ELZA'))
RETURNS void
AS
$$
BEGIN
      RAISE INFO '    ';
END;
$$ LANGUAGE plpgsql;

Возникает следующая ошибка:

ERROR:  type enum does not exist
SQL state: 42704

Буду признателен за любые рекомендации по исправлению этой ошибки.

1 Ответ

0 голосов
/ 04 февраля 2020

Создайте тип данных enum:

CREATE TYPE atype AS ENUM ('TRAINING', 'ELZA');

Затем вы можете использовать его как параметр функции:

CREATE FUNCTION Accounts_Active(
   IN_DeptName text,
   IN_Src atype
) RETURNS void
...

При использовании перечислений помните, что вы можете добавлять значения к таким данным типа, но никогда больше не удаляйте их. Часто вам будет лучше использовать строковый тип данных, такой как text, но, конечно, тогда вы должны написать код, который проверяет ввод на достоверность.

...