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:
Per questo motivo SETOF record
è considerato meno pratico. Dovrebbe essere utilizzato solo quando i tipi di colonna dei risultati non sono noti in anticipo.