0

動的なデータ型のセットを返す関数を作成しようとしています。データ型はすべて事前に作成されており、4番目の変数として呼び出すことができます。

CREATE OR REPLACE FUNCTION gethistoryrecord(text, text, text, text)
RETURNS setof $4 AS
$BODY$
declare
    r record;
begin
    for r in EXECUTE 'SELECT * FROM ' || $1 || ' where ref_id = ' || $2 || ' and create_date < ' || quote_literal($3) || '::timestamp and (archive_date is null or archive_date >= ' || quote_literal($3) || '::timestamp)' loop
        return next r;
    end loop;
    return;
end
$BODY$
  LANGUAGE plpgsql;

次のような関数を呼び出します

select * from gethistoryrecord('view_all_history','3540','2012-08-21 17:43:39.855852','holder_name')

出力を宣言する必要がなく、エラーが発生しない可能性はありますか?

「レコード」を返す関数には列定義リストが必要です

4

1 に答える 1

0

出力レコードを指定することもできますが、おそらくそれが必要です。PostgreSQLは比較的厳密に型指定されたシステムを持っており、あまりにも一般的なSRF関数を作成することはできません。

于 2012-08-22T05:57:22.287 に答える