我正在尝试编写一个“通用”函数,它将返回任何枚举的标签(在任何模式中)... 但我运气不佳,因为我不确定参数类型应该是什么......
目标是能够像这样调用函数
SELECT common.get_enum_labels('public.rainbow_colors');
SELECT common.get_enum_labels('audit.user_actions');
这就是我所拥有的
CREATE OR REPLACE FUNCTION common.get_enum_labels(enum_name regtype)
RETURNS SETOF text AS
$$
BEGIN
EXECUTE format('SELECT unnest(enum_range(NULL::%s))::text AS enum_labels ORDER BY 1', enum_name);
END;
$$
LANGUAGE plpgsql
STABLE
PARALLEL SAFE
;
任何提示将不胜感激
最佳答案
参数类型应该是regtype
,不要忘记从函数返回一些东西
CREATE OR REPLACE FUNCTION get_enum_labels(enum_name regtype)
RETURNS SETOF text AS
$$
BEGIN
RETURN QUERY
EXECUTE format('SELECT unnest(enum_range(NULL::%s))::text ORDER BY 1', enum_name);
END;
$$
LANGUAGE plpgsql
关于PostgreSQL - 返回任何 ENUM 标签的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44981159/