PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

CREATE VIEW menentukan lebih banyak nama kolom daripada kolom

Perhatikan contoh sederhana:

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

Ketika suatu fungsi dipanggil dalam konteks kolom/variabel, ia mengembalikan nilai tunggal dari tipe pengembalian yang ditentukan. Berikut adalah sumber kesalahannya:select tampilan select mengembalikan hanya satu kolom.

Namun jika fungsi dipanggil dalam konteks tabel maka ia mengembalikan nilai seperti tabel yang sebenarnya:

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

Jadi, Anda harus menggunakan pendekatan kedua saat membuat tampilan:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL - Mendapatkan data statistik

  2. kesalahan:ALTER TYPE ... ADD tidak dapat berjalan di dalam blok transaksi

  3. Cegah drop table jika kondisi tidak terpenuhi

  4. Optimalkan agregat lambat di LATERAL join

  5. Heroku pg:backup restore gagal karena tampaknya aplikasi Rails timeout