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

PostgreSQL:Bagaimana cara mengembalikan baris dinamis dari tabel tanpa menggunakan daftar definisi kolom?

Penanganan anyelement sebagai tipe pengembalian dijelaskan dalam Jenis Polimorfik :

Argumen ini dalam kasus Anda adalah relation_name diketik sebagai anyelement , dan dengan meneruskan NULL::table1 , ini memang memberi tahu perencana bahwa panggilan khusus function1 . ini harus mengembalikan SETOF table1 . Sejauh ini bagus.

Sekarang masalahnya adalah setelah dijalankan, fungsi tersebut tidak mengembalikan SETOF table1 tapi sesuatu yang lain. Ini bukan yang diharapkan oleh pelaksana, karena itu kesalahannya.

Meskipun judul pertanyaannya adalah Bagaimana cara mengembalikan baris dinamis... , yang tampaknya Anda inginkan adalah kolom dinamis atau kumpulan hasil polimorfik.

Dan ini adalah perjuangan berat dengan SQL, karena untuk membangun rencana eksekusi kueri, perencana harus mengetahui setiap kolom dengan tipenya untuk setiap hasil antara. Jika Anda mendesain kueri Anda dengan fungsi yang harus dijalankan untuk menemukan struktur outputnya, yang menciptakan masalah ayam dan telur:perencanaan harus mendahului eksekusi, tidak dapat bergantung padanya.

Dengan teknik inferensi tipe dinamis yang diterapkan pada anyelement , PostgreSQL sudah mendorong amplop untuk mengimplementasikan polimorfisme sebanyak mungkin dengan batasan ini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. POSTGIS:temukan semua titik dalam poligon

  2. Multi-tenancy dengan SQLAlchemy

  3. Bagaimana Anda mendapatkan tampilan 12 hari kerja yang dinamis di Postgresql?

  4. Menyimpan cap waktu di Postgres berdasarkan tanggal Java

  5. Menonaktifkan Pengumpulan Koneksi di Rails untuk menggunakan PgBouncer