Ungkapan penting di sana adalah 'record-oriented'. Sintaks untuk deklarasi kursor eksplisit
juga dengan jelas menunjukkan bahwa tipe yang dikembalikan harus berupa rowtype
, yang didefinisikan sebagai:
Anda memintanya untuk mengembalikan tipe data dari satu kolom, bukan dari baris/catatan. Jika Anda tidak ingin menggunakan %ROWTYPE
yang sudah ada kemudian Oracle menyediakan mekanisme untuk mendeklarasikan tipe record sebagai gantinya, seperti jawaban lain yang telah ditunjukkan.
Anda tampaknya mengeluh bahwa dokumentasi tidak mengatakan bahwa Anda tidak dapat menggunakan nilai skalar sebagai pengembalian. Itu juga tidak mengatakan bahwa Anda tidak dapat mengembalikan paket, atau tampilan, atau peran. Tidak perlu mencantumkan semua yang Anda tidak bisa lakukan, karena ini dengan jelas memberi tahu Anda apa yang Anda bisa lakukan, yaitu mengembalikan tipe yang mewakili baris.
Dalam kasus Anda, jenis baris itu hanya perlu berisi satu kolom, tetapi masih tidak ada alasan Anda harus dapat - atau mengharapkan Oracle - membiarkan Anda mengambil jalan pintas dalam skenario yang sangat terbatas itu. Tampaknya tidak masuk akal untuk menyediakan satu mekanisme yang konsisten - tidak terlalu sulit bagi Anda untuk mendeklarasikan record
, sedangkan mereka membangun, menguji, dan memelihara jalur terpisah untuk ini akan menjadi overhead yang cukup besar.