sql >> Base de Datos >  >> RDS >> PostgreSQL

Tipo de retorno de la función SQL:registros TABLE vs SETOF

Al devolver SETOF record las columnas de salida no se escriben ni se nombran. Por lo tanto, este formulario no se puede usar directamente en una cláusula FROM como si fuera una subconsulta o una tabla.

Es decir, al emitir:

SELECT * from events_by_type_2('social');

obtenemos este error:

Sin embargo, la persona que llama SQL puede "convertirlo" en los tipos de columna correctos. Este formulario funciona:

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

y da como resultado:

 id |      name      
----+----------------
  1 | Dance Party
  2 | Happy Hour
 ...

Por este motivo SETOF record se considera menos práctico. Debe usarse solo cuando los tipos de columna de los resultados no se conocen de antemano.