sql >> Base de Datos >  >> RDS >> Oracle

Impresión de Oracle Sys_refcursor en Oracle SQL Developer 1.5

Debería recorrer el cursor de referencia y, para cada fila, imprimir los campos individuales. En su versión actualizada, debe buscar el cursor en las variables escalares locales, no en otro cursor de referencia:

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

He adivinado lsn es un número, si no, entonces declara eso como el tipo correcto. Si el cursor devuelve más de una columna, deberá declarar variables locales para cada una de ellas y buscarlas todas en ellas, incluso si solo está mostrando una de ellas.

Si solo desea mostrarlo, puede usar una variable de vinculación para hacer esto (marcado en la versión actual y de vuelta a 1.5.0):

variable result refcursor

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

print result

Tenga en cuenta que la variable comando es no en el declare bloquear; es un comando de SQL Developer, no un comando PL/SQL. Como está print , aunque ambos solo están documentados en los documentos de SQL*Plus. Y también tenga en cuenta los dos puntos al comienzo de :result dentro del bloque, lo que indica que es una variable de vinculación, no una variable PL/SQL local.