sql >> Database teknologi >  >> RDS >> PostgreSQL

SQL-funktion returtype:TABLE vs SETOF-poster

Når du returnerer SETOF record outputkolonnerne er ikke skrevet og navngivet. Denne formular kan således ikke bruges direkte i en FROM-sætning, som om det var en underforespørgsel eller en tabel.

Det vil sige, når du udsteder:

SELECT * from events_by_type_2('social');

vi får denne fejl:

Det kan dog "castes" til de korrekte kolonnetyper af SQL-kalderen. Denne formular virker:

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

og resulterer i:

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

Af denne grund SETOF record anses for mindre praktisk. Det bør kun bruges, når kolonnetyperne for resultaterne ikke er kendt på forhånd.



  1. MYSQLI::prepare() , fejl ved brug af pladsholder :noget

  2. postgres - hvor i (liste) - kolonne eksisterer ikke

  3. Jeg vil gendanne databasen med et andet skema

  4. Hvorfor er '2'> '10'?