Eu suspeito que você acha que seu cursor deveria estar buscando linhas do REFCURSOR. Não é. O REFCURSOR é em si um cursor, você não usa outro cursor para selecionar a partir dele.
O que seu cursor atual está fazendo é buscar uma única linha, com uma única coluna, contendo o resultado da chamada da função. Que é um
record_cursor
não é um record_name
, então você obtém uma incompatibilidade de tipo. Eu suspeito que o que você realmente quer fazer é algo assim:
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;