Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Drucken von Oracle Sys_refcursor in Oracle SQL Developer 1.5

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.