Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Apakah ada cara untuk menampilkan kolom dinamis di Oracle apex

Petunjuk umum terlebih dahulu:Keluarkan variabel Anda l_sql ke konsol Anda menggunakan dbms_output.put_line atau gunakan semacam tabel debug tempat Anda dapat memasukkannya. Juga berhati-hatilah tentang tipe data variabel itu. Jika Anda perlu memperluas SQL, Anda dapat mencapai titik di mana Anda perlu menggunakan CLOB variabel alih-alih varchar2 .

Anda perlu menyediakan struktur tabel dan data uji jika Anda ingin masalah Anda dianalisis secara lengkap, oleh karena itu saya akan memberi Anda beberapa penjelasan umum terlebih dahulu:

Use Generic Column Names tidak apa-apa jika Anda memiliki jumlah kolom yang permanen dan tidak dapat diubah. Tetapi jika urutan kolom Anda atau bahkan jumlahnya dapat berubah, maka ini adalah ide yang buruk, karena halaman Anda akan menampilkan kesalahan jika kueri Anda menghasilkan lebih banyak kolom daripada Generic Column Count

Opsi 1:Gunakan alias kolom dalam kueri Anda

Tingkatkan PL/SQL Function Body returning SQL Query sedemikian rupa sehingga menampilkan nama tampilan verbose, seperti ini:

return 'select 1 as "Your verbose column name", 2 as "Column #2", 3 as "Column #3" from dual';

Itu terlihat seperti ini:

Ini memiliki kelemahan bahwa nama kolom juga muncul dengan cara ini di desainer dan APEX hanya akan memperbarui nama kolom ini jika Anda memvalidasi ulang fungsinya. Anda akan kesulitan untuk mereferensikan kolom dengan nama internal Your verbose column name dalam kode proses atau tindakan dinamis.

Namun tetap berfungsi, bahkan jika Anda mengubah nama kolom tanpa memberi tahu APEX, misalnya dengan mengeksternalisasi PL/SQL Function Body menjadi fungsi nyata.

Opsi 2:Gunakan judul kolom khusus

Sedikit tersembunyi, tetapi ada juga opsi untuk judul kolom yang sepenuhnya khusus. Itu hampir di akhir atribut halaman wilayah laporan Anda.

Di sini Anda juga dapat menyediakan fungsi yang mengembalikan nama kolom Anda. Hati-hati bahwa fungsi ini tidak seharusnya mengembalikan kueri SQL yang mengembalikan nama kolom, tetapi mengembalikan nama kolom yang dipisahkan oleh titik dua .

Dengan metode ini, lebih mudah untuk mengidentifikasi dan mereferensikan kolom Anda di desainer:

Opsi 3:Keduanya

Matikan Nama Kolom Generik, biarkan kueri Anda mengembalikan nama kolom yang dapat dengan mudah diidentifikasi dan dirujuk, dan gunakan custom column headings fungsi mengembalikan nama verbose untuk pengguna Anda.

Pendapat pribadi saya

Saya menggunakan opsi ke-3 dalam aplikasi produksi di mana orang dapat mengubah jumlah dan urutan kolom menggunakan item antar-jemput di halaman laporan itu sendiri. Butuh beberapa waktu, tetapi sekarang berfungsi seperti pesona, seperti beberapa PIVOT yang dinamis tanpa PIVOT .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Melewati bidang data saat memuat data yang dibatasi menggunakan SQLLDR

  2. Pisahkan string menjadi token di pl sql

  3. Bagaimana cara menghitung nilai kolom di Oracle 10g?

  4. Cara menjalankan SQL dalam skrip shell

  5. Saya perlu membuat tampilan yang menggabungkan tiga tabel, termasuk semua catatan dari tabel siswa dan kursus (ditampilkan di bawah)