sql >> Databasteknik >  >> RDS >> Oracle

Skriva ut Oracle Sys_refcursor i Oracle SQL Developer 1.5

Du skulle behöva gå över ref-markören och skriva ut de enskilda fälten för varje rad i den. I din uppdaterade version måste du hämta markören till lokala skalära variabler, inte en annan referensmarkör:

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

Jag har gissat lsn är ett nummer, om inte, deklarera det som rätt typ. Om markören returnerar mer än en kolumn måste du deklarera lokala variabler för var och en av dem och hämta dem alla till dem, även om du bara visar en av dem.

Om du bara vill visa den kan du använda en bindningsvariabel för att göra detta istället (markerad i den aktuella versionen och tillbaka till 1.5.0):

variable result refcursor

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

print result

Observera att variable kommando är inte i declare blockera; det är ett SQL Developer-kommando, inte ett PL/SQL-kommando. Som är print , även om båda endast är dokumenterade i SQL*Plus-dokumenten. Och notera även kolon i början av :result inom blocket, vilket indikerar att det är en bindningsvariabel, inte en lokal PL/SQL-variabel.



  1. php mySQL grupp sammanfoga och gruppera efter

  2. SELECT .. INTO för att skapa en tabell i PL/pgSQL

  3. Är det möjligt att mata ut en SELECT-sats från ett PL/SQL-block?

  4. Så här löser du Allmänt fel:2006 MySQL-server har försvunnit