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

CREATE VIEW angiver flere kolonnenavne end kolonner

Overvej det simple eksempel:

postgres=# create function foofunc() returns table(a int, b text) language sql as $$ select 1, 'a'::text $$;
postgres=# select foofunc();
╔═════════╗
║ foofunc ║
╠═════════╣
║ (1,a)   ║
╚═════════╝

Når en funktion kaldes i kolonne-/variabelkonteksten, returnerer den den enkelte værdi af den specificerede returnerende type. Her er kilden til fejlen:visningens select returnerer kun én kolonne.

Men hvis funktionen kaldes i tabelkonteksten, returnerer den værdierne som en sand tabel:

postgres=# select * from foofunc();
╔═══╤═══╗
║ a │ b ║
╠═══╪═══╣
║ 1 │ a ║
╚═══╧═══╝

Så du bør bruge den anden tilgang, når du opretter visningen:

CREATE VIEW v1 (c1, c2, c3, c4, c5) AS
  SELECT * FROM f1 (1, 2);



  1. Sum rækker fra forskellige forhold i Mysql

  2. SQL:Hvordan finder man dubletter baseret på to felter?

  3. Oracle-databasegendannelse

  4. En til mange/mange til mange SQL