PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Postgres Utwórz widok z funkcją typu rekordu

Przy bliższym przyjrzeniu się:wystarczy podzielić typ złożonego zwrotu w następujący sposób:

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

Szczegóły dotyczące dostępu do typów złożonych w podręczniku.

Na marginesie:radziłbym nie używać nawiasów dla swoich JOIN, chyba że wiesz dokładnie, co robisz. Tak jak to masz, wymuszasz jeden konkretny plan wykonania. Są szanse, że nie jest najlepszy.

Pierwsze podejście błędnie zinterpretowało komunikat o błędzie

Kiedy definiujesz funkcję za pomocą RETURNS record (którego unikam, jeśli to możliwe), przy każdym wywołaniu musisz podać listę definicji kolumn, na przykład:

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

Cytuję instrukcję tutaj :

Czystym rozwiązaniem jest zmiana funkcji tak, aby zwracała dobrze znany typ zamiast anonimowego rekordu. W zależności od okoliczności można to zrobić na różne sposoby. Jeśli masz problem z przepisaniem funkcji, otwórz kolejne pytanie.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak dokonać porównania kanonicznego XML z PostgreSQL?

  2. PG::Błąd:BŁĄD:nowe kodowanie (UTF8) jest niezgodne

  3. Jak uprościć zapytanie wybierające, które zawiera wiele wewnętrznych selekcji i zwiększyć wydajność PostgreSQL

  4. Potrzebujesz optymalizacji SQL (może powodem jest DISTINCT ON?)

  5. Nie można usunąć roli przyznanej do połączenia z bazą danych