Mám podezření, že si myslíte, že váš kurzor by měl načítat řádky z REFCURSORu. To není. REFCURSOR je sám o sobě kurzor, k výběru z něj nepoužijete jiný kurzor.
Váš aktuální kurzor načítá jeden řádek s jedním sloupcem, který obsahuje výsledek volání funkce. Což je record_cursor
není record_name
, takže dojde k neshodě typu.
Mám podezření, že to, co opravdu chcete udělat, je něco takového:
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;