sql >> Database >  >> RDS >> PostgreSQL

Return-type SQL-functie:TABLE vs SETOF-records

Bij het retourneren van SETOF record de uitvoerkolommen zijn niet getypt en hebben geen naam. Dit formulier kan dus niet rechtstreeks in een FROM-component worden gebruikt alsof het een subquery of een tabel is.

Dat wil zeggen, bij het uitgeven:

SELECT * from events_by_type_2('social');

we krijgen deze foutmelding:

Het kan echter door de SQL-aanroeper in de juiste kolomtypen worden "gegoten". Dit formulier werkt:

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

en resulteert in:

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

Om deze reden SETOF record wordt als minder praktisch beschouwd. Het mag alleen worden gebruikt als de kolomtypen van de resultaten niet van tevoren bekend zijn.



  1. Omgaan met database-integriteit

  2. Voorwaardelijke update_or_create met django

  3. Het gebruik van distinct op een kolom en het doen van order by op een andere kolom geeft een fout

  4. Index te zien (Oracle)