Oracle
 sql >> Base de données >  >> RDS >> Oracle

récupérer à partir de la fonction renvoyant un curseur de référence à l'enregistrement

Je soupçonne que vous pensez que votre curseur devrait récupérer les lignes du REFCURSOR. Ce n'est pas. Le REFCURSOR est lui-même un curseur, vous n'utilisez pas un autre curseur pour le sélectionner.

Votre curseur actuel récupère une seule ligne, avec une seule colonne, contenant le résultat de l'appel de fonction. Qui est un record_cursor pas un record_name , vous obtenez donc une incompatibilité de type.

Je soupçonne que ce que vous voulez vraiment faire, c'est quelque chose comme ça :

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;