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

Tipo di ritorno della funzione SQL:record TABLE vs SETOF

Quando si restituisce il SETOF record le colonne di output non sono digitate e non hanno un nome. Pertanto questo modulo non può essere utilizzato direttamente in una clausola FROM come se fosse una sottoquery o una tabella.

Cioè, durante l'emissione:

SELECT * from events_by_type_2('social');
 

otteniamo questo errore:

Tuttavia, può essere "trasmesso" nei tipi di colonna corretti dal chiamante SQL. Questo modulo funziona:

SELECT * from events_by_type_2('social') as (id bigint, name text);
 

e risulta in:

id | nome ----+---------------- 1 | Festa da ballo 2 | Aperitivo...

Per questo motivo SETOF record è considerato meno pratico. Dovrebbe essere utilizzato solo quando i tipi di colonna dei risultati non sono noti in anticipo.