sql >> Databáze >  >> RDS >> PostgreSQL

CREATE VIEW určuje více názvů sloupců než sloupců

Zvažte jednoduchý příklad:

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

Když je funkce volána v kontextu sloupce/proměnné, vrací jedinou hodnotu zadaného vraceného typu. Zde je zdroj chyby:select zobrazení vrátí pouze jeden sloupec.

Pokud je však funkce volána v kontextu tabulky, vrací hodnoty jako skutečná tabulka:

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

Při vytváření pohledu byste tedy měli použít druhý přístup:

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



  1. Uživatelské vstupy, vyčistěte a dezinfikujte před odesláním do db

  2. MuleSoft zahrnuje GraphQL k pokročilé integraci API

  3. Ví někdo, jakou šifrovací techniku ​​používá JDeveloper/SQL Developer k zachování přihlašovacích údajů?

  4. Oracle SQL:výběr z all_tab_columns nenajde existující sloupec