0

我正在从我制作的交叉表中提取所有 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$

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

4

1 回答 1

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;--这里不应该是分号!
环形
于 2013-05-21T15:59:57.907 回答