Возврат записей, вставленных функцией plpgsql

У меня есть задание cron, которое выполняет функцию plpgsql в postgres. Эта функция вставляет от нуля до многих записей в таблицу. Каков наилучший способ также вернуть записи, созданные функцией, в качестве ее результата?

Я использую PostgreSQL 9.1.


person David S    schedule 31.01.2013    source источник


Ответы (2)


К счастью, это можно сделать довольно легко. Скажем, вы вставляете в таблицу 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;

Вызов:

SELECT * FROM f_ins_return();

Ключевые элементы:

RETURNS SETOF insert_tbl
RETURN QUERY
RETURNING *

person Erwin Brandstetter    schedule 01.02.2013
comment
Идеально! Спасибо, Эрвин! - person David S; 01.02.2013

Вы можете создать столбец, в который вы поместите значение. Это значение является одним из небольшого набора ограниченных значений. В этом случае значения являются источником того, как создается запись. Одно значение — задание cron, другое — человеческая вставка или другие способы создания записи в этой таблице. После этого вы можете узнать, какая запись создается, когда и каким образом с помощью SQL.

person Loek Bergman    schedule 31.01.2013