【问题标题】:Dynamic Sql: Create array from records using array of column names动态 Sql:使用列名数组从记录创建数组
【发布时间】:2013-05-21 15:30:30
【问题描述】:

我正在从我制作的交叉表中提取所有 column_names (cname1)。有数千个这样的列名,所以我将它们组合成一个数组。然后,我想使用动态 sql(或任何有效的方法)来使用这些 column_names 根据同一个交叉表的记录创建一个数组。我不断收到错误:

ERROR: missing "LOOP" at end of SQL expression

.

CREATE OR REPLACE FUNCTION mffcu.test_ty_hey()
 RETURNS setof record
 LANGUAGE plpgsql
AS $function$
Declare
       cname1 text;         
Begin 

for cname1 in select array_agg(column_name) as useme
from(
select column_name::text
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'crosstab_183' 
and ordinal_position != 1
) as fin
join mffcu.crosstab_183 a on fin.id = a.id;

loop  
sql2 ='select distinct array['|| columnname ||'] from mffcu.crosstab_183';
execute sql2;
end loop;
END;
$function$

我一生都无法弄清楚为什么会出现此错误。

【问题讨论】:

    标签: sql function postgresql plpgsql dynamic-sql


    【解决方案1】:
    for cname1 in select array_agg(column_name) as useme 从( 选择列名::文本 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'crosstab_183' 和 ordinal_position != 1 ) 作为鳍 在 fin.id = a.id 上加入 mffcu.crosstab_183 a; --这里不应该是分号! 环形

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-23
      • 2019-05-10
      • 2020-05-24
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多