sql >> Database >  >> RDS >> Oracle

Oracle Sys_refcursor afdrukken in Oracle SQL Developer 1.5

U moet over de ref-cursor lopen en voor elke rij erin de afzonderlijke velden afdrukken. In uw bijgewerkte versie moet u de cursor in lokale scalaire variabelen halen, niet in een andere ref-cursor:

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

Ik heb geraden lsn is een getal, zo niet, verklaar dat dan als het juiste type. Als de cursor meer dan één kolom retourneert, moet u voor elk ervan lokale variabelen declareren en ze daar allemaal in ophalen, zelfs als u er maar één van laat zien.

Als u het alleen wilt weergeven, kunt u hiervoor een bindvariabele gebruiken (aangevinkt in de huidige versie en terug naar 1.5.0):

variable result refcursor

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

print result

Merk op dat de variable commando is niet in de declare blok; het is een SQL Developer-opdracht, geen PL/SQL-opdracht. Zoals print , hoewel beide alleen zijn gedocumenteerd in de SQL*Plus-documenten. En let ook op de dubbele punt aan het begin van :result binnen het blok, wat aangeeft dat het een bindvariabele is en geen lokale PL/SQL-variabele.



  1. Kolomtype wijzigen en niet null instellen

  2. MySQL DATE_FORMAT '%M' voor korte maand?

  3. MySQL-vriendentabel

  4. Waarom krijg ik #### in de NUMBER kolom na formaat?