我正在尝试将行从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;