PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Passare un ResultSet in una funzione Postgresql

Potresti usare un cursore , ma è molto poco pratico per calcolare un minimo.

Userei una tabella temporanea a tale scopo e passare il nome della tabella da utilizzare in SQL dinamico :

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;

Chiama:

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

SELECT f_min_id('foo');

Punti principali

-> Demo di SQLfiddle