Můžete použít kurzor , ale to je velmi nepraktické pro výpočetní minimum.
Použil bych dočasnou tabulku pro tento účel a předejte název tabulky pro použití v dynamickém 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;
Volejte:
CREATE TEMP TABLE foo ON COMMIT DROP AS
SELECT id, name
FROM users
LIMIT 50;
SELECT f_min_id('foo');
Hlavní body
-
První parametr je typu
regclass
aby se zabránilo vkládání SQL. Další informace v této související odpovědi na dba. SE . -
Vytvořil jsem dočasnou tabulku
ON COMMIT DROP
omezit jeho životnost na aktuální transakci. Může nebo nemusí být to, co chcete. -
Tento příklad můžete rozšířit o další parametry. Vyhledejte příklady kódu pro dynamické SQL pomocí
EXECUTE
.