Tôi nghi ngờ rằng bạn nghĩ rằng con trỏ của bạn nên tìm nạp các hàng từ REFCURSOR. Nó không thể. REFCURSOR tự nó là một con trỏ, bạn không sử dụng con trỏ khác để chọn từ nó.
Những gì con trỏ hiện tại của bạn đang làm là tìm nạp một hàng, với một cột duy nhất, chứa kết quả của lệnh gọi hàm. Đó là record_cursor
không phải là record_name
, vì vậy bạn nhận được một loại không khớp.
Tôi nghi ngờ những gì bạn thực sự muốn làm là một cái gì đó như thế này:
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;