この機能:
CREATE OR REPLACE FUNCTION fn_test1()
RETURNS SETOF date AS
$BODY$
declare
i int;
begin
i:=0;
while i<5 loop
return next '2001-01-02'::date;
i:=i+1;
end loop;
end
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
この表:
CREATE TABLE teste1
(
teste1_id serial NOT NULL,
num integer,
fn_date date)
このような INSERT は問題なく動作します (5 行を挿入):
Insert into teste1(num,fn_date)
select 1, fn_test1();
しかし、 2 つの日付を連続して返す関数と、2 列の日付を含むテーブルが必要な場合は、どうすればよいでしょうか? これまでにこれを作成しました:
CREATE OR REPLACE FUNCTION fn_test2()
RETURNS TABLE(a date, b date) AS
$BODY$
declare
_start_date date;
_end_date date;
begin
_start_date:='2001-01-01'::date;
_end_date:='2002-01-01'::date;
i:=0;
while i < 5 loop
return query(select _start_date,_end_date);
i:=i+1;
end loop;
end
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
そして、このテーブル:
CREATE TABLE teste2
(
teste2_id serial NOT NULL,
num integer,
start_date date,
end_date date)
今、私はこれを行うことはできません:
INSERT INTO teste2(num,start_date,end_date)
SELECT 1, fn_test2();
関数を返すようにしましsetof mytype
た(2つの日付を持つ型を作成します)が、同じことをしているようです。これを機能させるには、INSERT クエリまたは関数をどのように変更すればよいですか?