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

Postgres Créer une vue avec la fonction de type d'enregistrement

En y regardant de plus près :il vous suffit de diviser le type de retour composite comme ceci :

CREATE OR REPLACE VIEW "Sumario" AS 
SELECT ...
 (conta_relatos("Fatores"."ID", "Fatores_1"."ID")).*
FROM ...

Détails sur l'accès aux types composites dans le manuel.

En aparté :je vous conseillerais de ne pas utiliser de parenthèses pour vos JOIN à moins que vous ne sachiez exactement ce que vous faites. De la façon dont vous l'avez, vous forcez un plan d'exécution particulier. Il y a de fortes chances que ce ne soit pas le meilleur.

La première approche a mal interprété le message d'erreur

Lorsque vous définissez une fonction avec RETURNS record (ce que j'évite dans la mesure du possible), vous devez fournir une liste de définition de colonne avec chaque appel, comme :

SELECT * FROM conta_relatos(1,2) AS f(col1 int, col2 text, ...)

Je cite le manuel ici :

La solution propre est de changer votre fonction pour retourner un type bien connu au lieu d'un enregistrement anonyme. Il existe différentes façons de procéder, selon les circonstances. Si vous avez du mal à réécrire votre fonction, ouvrez une autre question.