Oracle
 sql >> Database >  >> RDS >> Oracle

Stampa di Oracle Sys_refcursor in Oracle SQL Developer 1.5

Dovresti scorrere il cursore di riferimento e per ogni riga in esso, stampare i singoli campi. Nella tua versione aggiornata devi recuperare il cursore nelle variabili scalari locali, non in un altro cursore di riferimento:

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;
/

Ho indovinato lsn è un numero, in caso contrario dichiararlo come il tipo corretto. Se il cursore restituisce più di una colonna, dovrai dichiarare le variabili locali per ciascuna di esse e inserirle tutte in quelle, anche se ne stai visualizzando solo una.

Se vuoi solo visualizzarlo, puoi invece utilizzare una variabile di collegamento per farlo (selezionato nella versione corrente e torna alla 1.5.0):

variable result refcursor

begin
  emp.emp360_utils.GET_EMPLOYEEs(222334, :result); 
end;
/

print result

Tieni presente che la variable comando è non nella declare bloccare; è un comando SQL Developer, non un comando PL/SQL. Come è print , sebbene entrambi siano documentati solo nei documenti SQL*Plus. E nota anche i due punti all'inizio di :result all'interno del blocco, che indica che si tratta di una variabile di collegamento, non di una variabile PL/SQL locale.