【问题标题】:Postgres FOR loop syntax error at or nearPostgres FOR循环语法错误在或附近
【发布时间】:2019-08-19 17:40:20
【问题描述】:

我正在尝试将行从 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 或附近出现语法错误”。根据官方documentation,这是正确的。我在这里错过了什么?

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    您只能在使用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;
    

    【讨论】:

      猜你喜欢
      • 2014-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-10
      • 1970-01-01
      • 2021-12-04
      相关资源
      最近更新 更多