返回 plpgsql 函数插入的记录

Dav*_*d S 2 sql postgresql plpgsql sql-insert postgresql-9.1

我有一个在 postgres 中执行 plpgsql 函数的 cron 作业。此函数将零到多条记录插入表中。返回由函数创建的记录作为结果的最佳方法是什么?

我正在使用 PostgreSQL 9.1

Erw*_*ter 6

幸运的是,这可以很容易地完成。说,你正在插入表insert_tbl......

CREATE OR REPLACE FUNCTION f_ins_return()
  RETURNS SETOF insert_tbl AS
$func$
BEGIN

RETURN QUERY
INSERT INTO insert_tbl
SELECT * FROM othertable LIMIT 3 -- or where ever your rows come from ...
RETURNING *;

END
$func$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

称呼:

SELECT * FROM f_ins_return();
Run Code Online (Sandbox Code Playgroud)

关键要素:

RETURNS SETOF insert_tbl
RETURN QUERY
RETURNING *