PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Passer un ResultSet dans une fonction Postgresql

Vous pouvez utiliser un curseur , mais cela très peu pratique pour calculer un minimum.

J'utiliserais une table temporaire à cet effet, et transmettez le nom de la table à utiliser en SQL dynamique :

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;

Appel :

CREATE TEMP TABLE foo ON COMMIT DROP AS
SELECT id, name
FROM   users
LIMIT  50;

SELECT f_min_id('foo');

Points majeurs

-> Démo SQLfiddle