PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Tipo de retorno da função SQL:registros TABLE vs SETOF


Ao retornar SETOF record as colunas de saída não são digitadas e não nomeadas. Assim, este formulário não pode ser usado diretamente em uma cláusula FROM como se fosse uma subconsulta ou uma tabela.

Ou seja, ao emitir:
SELECT * from events_by_type_2('social');

obtemos este erro:

No entanto, ele pode ser "convertido" nos tipos de coluna corretos pelo chamador SQL. Este formulário funciona:
SELECT * from events_by_type_2('social') as (id bigint, name text);

e resulta em:
 id |      name      
----+----------------
  1 | Dance Party
  2 | Happy Hour
 ...

Por esse motivo SETOF record é considerado menos prático. Deve ser usado apenas quando os tipos de coluna dos resultados não são conhecidos antecipadamente.