PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Type de retour de la fonction SQL :enregistrements TABLE vs SETOF

Lors du retour de l'SETOF record les colonnes de sortie ne sont ni typées ni nommées. Ainsi, ce formulaire ne peut pas être utilisé directement dans une clause FROM comme s'il s'agissait d'une sous-requête ou d'une table.

C'est-à-dire, lors de l'émission :

SELECT * from events_by_type_2('social');

nous obtenons cette erreur :

Il peut cependant être "casté" dans les types de colonne corrects par l'appelant SQL. Ce formulaire fonctionne :

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

et aboutit à :

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

Pour cette raison SETOF record est considéré comme moins pratique. Il ne doit être utilisé que lorsque les types de colonnes des résultats ne sont pas connus à l'avance.