如何传递 ENUM 变量作为 POSTGRESQL 函数的输入
How to pass ENUM variable as input for POSTGRESQL functions
我在 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
任何关于如何修复此错误的指导都将不胜感激。
创建枚举数据类型:
CREATE TYPE atype AS ENUM ('TRAINING', 'ELZA');
那么你可以将它作为函数参数使用:
CREATE FUNCTION Accounts_Active(
IN_DeptName text,
IN_Src atype
) RETURNS void
...
使用枚举时,请记住您可以向此类数据类型添加值,但绝不能再删除它们。通常你会更好地使用像 text
这样的字符串数据类型,但是当然你必须编写代码来检查输入的有效性。
我在 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
任何关于如何修复此错误的指导都将不胜感激。
创建枚举数据类型:
CREATE TYPE atype AS ENUM ('TRAINING', 'ELZA');
那么你可以将它作为函数参数使用:
CREATE FUNCTION Accounts_Active(
IN_DeptName text,
IN_Src atype
) RETURNS void
...
使用枚举时,请记住您可以向此类数据类型添加值,但绝不能再删除它们。通常你会更好地使用像 text
这样的字符串数据类型,但是当然你必须编写代码来检查输入的有效性。