【发布时间】:2015-02-13 17:49:36
【问题描述】:
我正在尝试编写一个循环来读取临时表,然后将该记录插入到另一个表中。我需要进行单条记录处理的原因是我需要在每次插入目标表后找到序列的值。我还没有将该功能添加到 SQL 中(稍后会出现)。我在将记录插入目标表时遇到了困难。
我遇到语法错误,但我认为还有更多需要修复的地方。
CREATE OR REPLACE FUNCTION test_insert()
RETURNS SETOF varchar AS
$func$
DECLARE
rec record;
BEGIN
FOR rec IN
SELECT * FROM TBL_stg01
LOOP INSERT INTO target_tbl
SELECT * FROM TBL_stg01
;
END IF;
END LOOP;
END
$func$ LANGUAGE plpgsql STABLE;
【问题讨论】:
-
这似乎是与圆顶类型的数据库交互,但您忽略了识别。
-
如果您需要有关如何修复它的帮助,您可能想确定语法错误是什么。
-
不需要循环或函数:
insert into target_tbl select * from tbl_stg01 returning id. -
我看到了
END IF声明,但没有看到IF;我看到了FOR声明,但没有看到END FOR。 -
@ScottHunter:没有
END FOR。只有LOOP需要END LOOP。不过,END IF是对的。
标签: sql postgresql for-loop plpgsql