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.