Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Imprimindo o Oracle Sys_refcursor no Oracle SQL Developer 1.5


Você precisaria fazer um loop sobre o cursor ref e para cada linha nele, imprimir os campos individuais. Em sua versão atualizada, você precisa buscar o cursor em variáveis ​​escalares locais, não em outro cursor de referência:
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;
/

Eu adivinhei lsn é um número, se não, então declare-o como o tipo correto. Se o cursor retornar mais de uma coluna, você precisará declarar variáveis ​​locais para cada uma delas e buscá-las todas nelas, mesmo que esteja exibindo apenas uma delas.

Se você quiser apenas exibi-lo, poderá usar uma variável de ligação para fazer isso (verificado na versão atual e de volta para 1.5.0):
variable result refcursor

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

print result

Observe que a variable comando é não no declare quadra; é um comando SQL Developer, não um comando PL/SQL. Como está print , embora ambos estejam documentados apenas nos documentos do SQL*Plus. E também observe os dois pontos no início de :result dentro do bloco, o que indica que é uma variável de ligação, não uma variável PL/SQL local.