Podejrzewam, że uważasz, że kursor powinien pobierać wiersze z REFCURSOR. To nie jest. REFCURSOR sam w sobie jest kursorem, nie używasz innego kursora do wybierania z niego.
Bieżący kursor pobiera pojedynczy wiersz z pojedynczą kolumną zawierającą wynik wywołania funkcji. Który jest record_cursor
nie record_name
, więc otrzymujesz niezgodność typu.
Podejrzewam, że naprawdę chcesz zrobić coś takiego:
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;