dp1*_*212 3 postgresql enums function input-parameters
我在 MySQL 中有一个运行良好的函数:
CREATE PROCEDURE `Accounts_Active`(IN_DeptName VARCHAR(255), IN_Src ENUM('TRAINING','ELZA'))
BEGIN
END$$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
但是当转换为 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;
Run Code Online (Sandbox Code Playgroud)
出现以下错误:
ERROR: type enum does not exist
SQL state: 42704
Run Code Online (Sandbox Code Playgroud)
任何有关如何修复此错误的指导将不胜感激。
创建枚举数据类型:
CREATE TYPE atype AS ENUM ('TRAINING', 'ELZA');
Run Code Online (Sandbox Code Playgroud)
然后你可以将它用作函数参数:
CREATE FUNCTION Accounts_Active(
IN_DeptName text,
IN_Src atype
) RETURNS void
...
Run Code Online (Sandbox Code Playgroud)
使用枚举时,请记住您可以向此类数据类型添加值,但切勿再次删除它们。通常,您最好使用像 之类的字符串数据类型text,但是当然,您必须编写代码来检查输入的有效性。