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

Udskrivning af Oracle Sys_refcursor i Oracle SQL Developer 1.5

Du skal gå over ref-markøren og udskrive de enkelte felter for hver række i den. I din opdaterede version skal du hente markøren ind i lokale skalarvariabler, ikke en anden ref-markø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;
/

Jeg har gættet lsn er et tal, hvis ikke, så erklær det som den rigtige type. Hvis markøren returnerer mere end én kolonne, bliver du nødt til at erklære lokale variabler for hver af dem og hente dem alle ind i dem, selvom du kun viser én af dem.

Hvis du bare vil vise det, kan du bruge en bind-variabel til at gøre dette i stedet (markeret i den aktuelle version og tilbage til 1.5.0):

variable result refcursor

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

print result

Bemærk, at variable kommando er ikke i declare blok; det er en SQL-udviklerkommando, ikke en PL/SQL-kommando. Som er print , selvom begge kun er dokumenteret i SQL*Plus-dokumenterne. Og bemærk også kolon i starten af ​​:result inden for blokken, hvilket indikerer, at det er en bindingsvariabel, ikke en lokal PL/SQL-variabel.



  1. Forebyggelse af SQL-injektionsangreb med Python

  2. MySQL Closure Table hierarkisk database - Sådan trækker du information ud i den rigtige rækkefølge

  3. viser resultater lodret i oracle

  4. VÆLG resultater med forkert kolonnerækkefølge med PyMySQL