Jag misstänker att du tycker att markören borde hämta rader från REFCURSOR. Det är inte. REFCURSOR är i sig en markör, du använder inte en annan markör för att välja från den.
Vad din nuvarande markör gör är att hämta en enda rad, med en enda kolumn, som innehåller resultatet av funktionsanropet. Vilket är en record_cursor
inte ett record_name
, så du får en typ som inte matchar.
Jag misstänker att det du verkligen vill göra är något sånt här:
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;