カーソルを使用できます 、しかし、最小値を計算するには非常に実用的ではありません。
一時テーブルを使用します そのために、動的SQLで使用するテーブル名を渡します :
CREATE OR REPLACE FUNCTION f_min_id(_tbl regclass, OUT min_id int) AS
$func$
BEGIN
EXECUTE 'SELECT min(id) FROM ' || _tbl
INTO min_id;
END
$func$ LANGUAGE plpgsql;
電話:
CREATE TEMP TABLE foo ON COMMIT DROP AS
SELECT id, name
FROM users
LIMIT 50;
SELECT f_min_id('foo');
主なポイント
-
最初のパラメーターはタイプ
regclass
です。 SQLインジェクションを防ぐため。 dbaに関するこの関連回答の詳細。 SE 。 -
一時テーブルを
ON COMMIT DROP
にしました。 その存続期間を現在のトランザクションに制限します。希望するものである場合とそうでない場合があります。 -
この例を拡張して、より多くのパラメーターを取得できます。
EXECUTE
を使用して動的SQLのコード例を検索する 。