下面是我的代码:
CREATE OR REPLACE FUNCTION public.view_columns_f(viewname text)
RETURNS TABLE(columnn_name text, data_type text)
LANGUAGE plpgsql
AS $function$
BEGIN
return query execute
$$SELECT attname, format_type(atttypid, atttypmod) AS data_type
FROM pg_attribute
WHERE attrelid = '$1'::regclass$$
using viewname;
END;
字符串
错误是关系“$1”不存在,因为我没有正确绑定它。
1条答案
按热度按时间zd287kbt1#
Adrian指出了几个问题,我又修复了几个:
字符串
电话:
型
最重要的是,幸运的是,您根本不需要动态SQL。在使用更复杂的动态SQL之前,请先掌握普通的PL/pgSQL。
可以是一个更简单的SQL函数,没有 * 需要 * PL/pgSQL。
函数名是误导性的。你可以通过这种方式获得任何注册关系的列,而不仅仅是视图。
进一步阅读: