Ik vermoed dat je denkt dat je cursor rijen moet ophalen uit de REFCURSOR. Het is niet. De REFCURSOR is zelf een cursor, u gebruikt geen andere cursor om er uit te selecteren.
Wat uw huidige cursor doet, is een enkele rij ophalen, met een enkele kolom, die het resultaat van de functieaanroep bevat. Dat is een record_cursor
geen record_name
, dus je krijgt een niet-overeenkomend type.
Ik vermoed dat wat je echt wilt doen zoiets is als dit:
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;