U moet over de ref-cursor lopen en voor elke rij erin de afzonderlijke velden afdrukken. In uw bijgewerkte versie moet u de cursor in lokale scalaire variabelen halen, niet in een andere ref-cursor:
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;
/
Ik heb geraden lsn
is een getal, zo niet, verklaar dat dan als het juiste type. Als de cursor meer dan één kolom retourneert, moet u voor elk ervan lokale variabelen declareren en ze daar allemaal in ophalen, zelfs als u er maar één van laat zien.
Als u het alleen wilt weergeven, kunt u hiervoor een bindvariabele gebruiken (aangevinkt in de huidige versie en terug naar 1.5.0):
variable result refcursor
begin
emp.emp360_utils.GET_EMPLOYEEs(222334, :result);
end;
/
print result
Merk op dat de variable
commando
is niet in de declare
blok; het is een SQL Developer-opdracht, geen PL/SQL-opdracht. Zoals print
, hoewel beide alleen zijn gedocumenteerd in de SQL*Plus-documenten. En let ook op de dubbele punt aan het begin van :result
binnen het blok, wat aangeeft dat het een bindvariabele is en geen lokale PL/SQL-variabele.