Podczas zwracania SETOF record
kolumny wyjściowe nie są wpisane ani nazwane. Dlatego ta forma nie może być używana bezpośrednio w klauzuli FROM, tak jakby była podzapytaniem lub tabelą.
Oznacza to, że przy wydawaniu:
SELECT * from events_by_type_2('social');
otrzymujemy ten błąd:
Można go jednak "rzucić" na odpowiednie typy kolumn przez wywołujący SQL. Ten formularz działa:
SELECT * from events_by_type_2('social') as (id bigint, name text);
i wyniki w:
id | name ----+---------------- 1 | Dance Party 2 | Happy Hour ...
Z tego powodu SETOF record
jest uważany za mniej praktyczny. Należy go używać tylko wtedy, gdy typy kolumn wyników nie są z góry znane.