型指定されていない行の値を返すことができる postgres 関数を定義する方法を探しています。議論のために、次のテーブルが存在すると仮定します。
create table foo(
id serial primary key,
value1 varchar(255),
value2 int,
value3 datetime,
value4 boolean
);
また、一部の列の結果を返すことができる関数もあります (これはやや不自然な例ですが、実際には内部で多くの結合が発生するため、関連する列のみを使用して最小限に抑えたいと考えています)。
create or replace function foo_func(col1 text, col2 text) returns
table(?, ?) as
$$
declare
sql text;
begin
sql := 'select ' || col1 || ', ' || col2 || ' from foo'
return execute sql;
end
$$ language plpgsql;
列の値は選択した列引数に依存するため、戻りテーブルを前もって定義することはできません。値を指定せずに行を返す方法はありますか? 代わりにカーソルを返すことを検討しましたが、これが最適なオプションかどうかはわかりません。
(postgresql のバージョンを定義できます)