Anda tidak dapat membuat %ROWTYPE
variabel untuk tabel yang tidak dikenal dan Anda tidak dapat merujuk ke nama kolom secara statis jika Anda tidak mengetahui nama tabel pada waktu kompilasi.
Anda dapat menggunakan paket dbms_sql untuk menangani pernyataan SQL yang sepenuhnya dinamis. Anda harus menyiapkan pernyataan SQL, menjelaskan kolom untuk mengetahui jumlah kolom dan tipe datanya, mengikat variabel yang sesuai, lalu mengambil data. Ini adalah cara penulisan kode yang jauh lebih rumit daripada contoh yang Anda posting, tetapi ini memberi Anda fleksibilitas yang luar biasa.
Ada beberapa contoh penggunaan paket dbms_sql dalam dokumentasi yang saya tautkan. Anda mungkin juga ingin memeriksa fungsi dump_csv Tom Kyte yang menulis hasil kueri arbitrer ke file CSV menggunakan UTL_FILE
. Jika Anda benar-benar ingin menulis data ke DBMS_OUTPUT
, Anda cukup mengganti UTL_FILE
panggilan dengan DBMS_OUTPUT
. Tapi saya cukup yakin Anda ingin melakukan sesuatu yang lebih berguna daripada hanya menulis data ke DBMS_OUTPUT
buffer sehingga prosedur Tom mungkin lebih mendekati apa yang sebenarnya ingin Anda capai.