PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgres Ansicht mit Datensatztypfunktion erstellen

Bei näherer Betrachtung:Sie müssen den zusammengesetzten Rückgabetyp nur so aufteilen:

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

Details zum Zugriff auf zusammengesetzte Typen im Handbuch.

Nebenbei:Ich würde Ihnen raten, keine Klammern für Ihre JOINs zu verwenden, es sei denn, Sie wissen genau, was Sie tun. So wie Sie es haben, erzwingen Sie einen bestimmten Ausführungsplan. Wahrscheinlich ist es nicht das beste.

Der erste Ansatz hat die Fehlermeldung falsch interpretiert

Wenn Sie eine Funktion mit RETURNS record definieren (was ich nach Möglichkeit vermeide), müssen Sie bei jedem Aufruf eine Spaltendefinitionsliste angeben, etwa:

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

Ich zitiere das Handbuch hier :

Die saubere Lösung besteht darin, Ihre Funktion so zu ändern, dass sie einen bekannten Typ zurückgibt statt einer anonymen Aufzeichnung. Dazu gibt es je nach Situation verschiedene Möglichkeiten. Wenn Sie Probleme beim Umschreiben Ihrer Funktion haben, öffnen Sie eine andere Frage.