如何将枚举变量作为POSTGRESQL函数的输入传递
我在MySQL中有一个功能,运行良好:如何将枚举变量作为POSTGRESQL函数的输入传递,postgresql,function,enums,input-parameters,Postgresql,Function,Enums,Input Parameters,我在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','E
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
,但当然,您必须编写检查输入有效性的代码。创建枚举数据类型:
CREATE TYPE atype AS ENUM ('TRAINING', 'ELZA');
然后可以将其用作函数参数:
CREATE FUNCTION Accounts_Active(
IN_DeptName text,
IN_Src atype
) RETURNS void
...
使用枚举时,请记住,您可以向此类数据类型添加值,但不能再删除它们。通常,您最好使用字符串数据类型,如
text
,但当然,您必须编写代码来检查输入的有效性。您不会动态定义枚举。您需要已经定义了它,然后在您的函数中,您可以在_srcyour _enum _type中说,您好,欢迎使用堆栈溢出。正如404所说,您需要先定义枚举,然后才能使用它。查看PostgreSQL文档,您不需要动态定义枚举。您需要已经定义了它,然后在您的函数中,您可以在_srcyour _enum _type中说,您好,欢迎使用堆栈溢出。正如404所说,您需要先定义枚举,然后才能使用它。查看PostgreSQL文档