PostgreSQL:列名到数组 PL/pgSQL
Posted
技术标签:
【中文标题】PostgreSQL:列名到数组 PL/pgSQL【英文标题】:PostgreSQL: column names into array PL/pgSQL 【发布时间】:2015-09-12 16:49:48 【问题描述】:create or replace function extr( tabname text ) returns text[] as
$$
declare cols text[];
begin
execute 'array(select column_name::text from information_schema.columns where table_name = '||quote_literal(tabname)||');' into cols;
return cols;
end;
$$
language 'plpgsql';
select extr('test');
提供一个表名并希望将其列名作为数组返回。上面的代码给出了“数组”或附近的语法错误。如何解决这个问题?
【问题讨论】:
【参考方案1】:查询应该以select
开头,而不是array
并且不必是动态SQL。
试试这个修改后的版本:
create or replace function extr( tabname text ) returns text[] as
$$
declare cols text[];
begin
select array(select column_name::text from information_schema.columns
where table_name = tabname) into cols;
return cols;
end;
$$
language 'plpgsql';
【讨论】:
以上是关于PostgreSQL:列名到数组 PL/pgSQL的主要内容,如果未能解决你的问题,请参考以下文章
PostgreSQL vs Oracle:PL/pgSQL 的“编译时”检查
使用 PostgreSQL PL/pgSQL 在 For 循环中添加月份