Postgres FOR 循环语法错误在或接近



我正在尝试将行从table_a和table_b写入数组并将其插入表中。这是我的函数定义:

CREATE OR REPLACE FUNCTION format()
RETURNS void
LANGUAGE 'sql'
VOLATILE
COST 100
AS $BODY$ 
select array(select row(wk1,wk2) from table_a ) into arr1;
select array(select row(wk1,wk2) from table_b ) into arr2;
FOR i IN 1..2 LOOP
insert into table_c values(arr1[i],arr2[i]);
END LOOP;
$BODY$;

我在 for 循环行中收到一个错误,指出"在 FOR 或附近出现语法错误"。根据官方文件,这是正确的。我在这里错过了什么?

您只能在使用language plpgsql的函数(或过程(中使用FOR循环。SQL 没有 for 循环。

但是你根本不需要循环或函数。这可以使用一个简单的 INSERT 语句来完成,该语句以 SELECT 语句作为其源:

insert into table_c
select wk1, wk2 from table_a
union all
select wk1, wk2 from table_b;

最新更新