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
.