我从我创建的交叉表中拉出所有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$
我不能为我的生活弄清楚为什么我会收到这个错误。
答案 0 :(得分:1)
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; --here should not be semicolon! loop