Saya menduga bahwa Anda berpikir bahwa kursor Anda harus mengambil baris dari REFCURSOR. Ini bukan. REFCURSOR itu sendiri adalah kursor, Anda tidak menggunakan kursor lain untuk memilihnya.
Apa yang dilakukan kursor Anda saat ini adalah mengambil satu baris, dengan satu kolom, yang berisi hasil pemanggilan fungsi. Yang merupakan record_cursor
bukan record_name
, sehingga Anda mendapatkan ketidakcocokan jenis.
Saya menduga apa yang sebenarnya ingin Anda lakukan adalah seperti ini:
declare
symbol_cursor package_name.record_cursor;
symbol_record package_name.record_name;
begin
symbol_cursor := package_name.function_name('argument');
loop
fetch symbol_cursor into symbol_record;
exit when symbol_cursor%notfound;
-- Do something with each record here, e.g.:
dbms_output.put_line( symbol_record.field_a );
end loop;
CLOSE symbol_cursor;
end;