2

我在 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

任何有关如何修复此错误的指导将不胜感激。

4

1 回答 1

4

创建枚举数据类型:

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

然后您可以将其用作函数参数:

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

使用枚举时,请记住您可以将值添加到此类数据类型,但永远不能再次删除它们。通常你会更好地使用类似的字符串数据类型text,但当然你必须编写代码来检查输入的有效性。

于 2020-02-04T15:32:31.267 回答