Sie müssten den Ref-Cursor durchlaufen und für jede Zeile darin die einzelnen Felder ausdrucken. In Ihrer aktualisierten Version müssen Sie den Cursor in lokale skalare Variablen holen, nicht in einen anderen 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;
/
Ich habe lsn
erraten eine Zahl ist, wenn nicht, dann deklariere das als den richtigen Typ. Wenn der Cursor mehr als eine Spalte zurückgibt, müssen Sie für jede von ihnen lokale Variablen deklarieren und sie alle in diese holen, selbst wenn Sie nur eine davon anzeigen.
Wenn Sie es nur anzeigen möchten, können Sie stattdessen eine Bind-Variable verwenden (in der aktuellen Version und zurück zu 1.5.0 aktiviert):
variable result refcursor
begin
emp.emp360_utils.GET_EMPLOYEEs(222334, :result);
end;
/
print result
Beachten Sie, dass die variable
ist Befehl
ist nicht im declare
Block; es ist ein SQL Developer-Befehl, kein PL/SQL-Befehl. Wie print
, obwohl beide nur in der SQL*Plus-Dokumentation dokumentiert sind. Beachten Sie auch den Doppelpunkt am Anfang von :result
innerhalb des Blocks, was darauf hinweist, dass es sich um eine Bind-Variable und nicht um eine lokale PL/SQL-Variable handelt.