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

Impression d'Oracle Sys_refcursor dans Oracle SQL Developer 1.5

Vous auriez besoin de boucler sur le curseur de référence et pour chaque ligne qu'il contient, imprimez les champs individuels. Dans votre version mise à jour, vous devez récupérer le curseur dans des variables scalaires locales, et non dans un autre curseur de référence :

set serveroutput on;
declare
  result sys_refcursor;
  lsn number; -- guessing the data type
begin
  emp.emp360_utils.GET_EMPLOYEEs(222334,result); 
  loop
    fetch result into lsn; -- and other columns if needed
    exit when result%notfound;
    dbms_output.put_line(lsn);
  end loop;
end;
/

J'ai deviné lsn est un nombre, sinon déclarez-le comme le bon type. Si le curseur renvoie plus d'une colonne, vous devrez déclarer des variables locales pour chacune d'entre elles et les récupérer toutes dans celles-ci, même si vous n'en affichez qu'une seule.

Si vous voulez simplement l'afficher, vous pouvez utiliser une variable de liaison pour le faire à la place (vérifié dans la version actuelle et retour à 1.5.0) :

variable result refcursor

begin
  emp.emp360_utils.GET_EMPLOYEEs(222334, :result); 
end;
/

print result

Notez que la variable commande n'est pas dans le declare bloquer; c'est une commande SQL Developer, pas une commande PL/SQL. Tel print , bien que les deux ne soient documentés que dans la documentation SQL*Plus. Et notez également les deux-points au début de :result dans le bloc, ce qui indique qu'il s'agit d'une variable liée, et non d'une variable PL/SQL locale.