Du skulle behöva gå över ref-markören och skriva ut de enskilda fälten för varje rad i den. I din uppdaterade version måste du hämta markören till lokala skalära variabler, inte en annan referensmarkör:
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;
/
Jag har gissat lsn
är ett nummer, om inte, deklarera det som rätt typ. Om markören returnerar mer än en kolumn måste du deklarera lokala variabler för var och en av dem och hämta dem alla till dem, även om du bara visar en av dem.
Om du bara vill visa den kan du använda en bindningsvariabel för att göra detta istället (markerad i den aktuella versionen och tillbaka till 1.5.0):
variable result refcursor
begin
emp.emp360_utils.GET_EMPLOYEEs(222334, :result);
end;
/
print result
Observera att variable
kommando
är inte i declare
blockera; det är ett SQL Developer-kommando, inte ett PL/SQL-kommando. Som är print
, även om båda endast är dokumenterade i SQL*Plus-dokumenten. Och notera även kolon i början av :result
inom blocket, vilket indikerar att det är en bindningsvariabel, inte en lokal PL/SQL-variabel.