sql >> Databáze >  >> RDS >> Oracle

Tisk Oracle Sys_refcursor v Oracle SQL Developer 1.5

Museli byste přejít přes referenční kurzor a pro každý řádek v něm vytisknout jednotlivá pole. Ve vaší aktualizované verzi musíte načíst kurzor do místních skalárních proměnných, ne do dalšího referenčního kurzoru:

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

Uhodl jsem lsn je číslo, pokud ne, deklarujte to jako správný typ. Pokud kurzor vrací více než jeden sloupec, budete muset pro každou z nich deklarovat lokální proměnné a všechny je do nich načíst, i když zobrazujete pouze jednu z nich.

Pokud jej chcete pouze zobrazit, můžete k tomu místo toho použít proměnnou vazby (zaškrtnuto v aktuální verzi a zpět na 1.5.0):

variable result refcursor

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

print result

Všimněte si, že variable příkaz není v declare blok; je to příkaz SQL Developer, nikoli příkaz PL/SQL. Stejně jako print , ačkoli oba jsou zdokumentovány pouze v dokumentech SQL*Plus. A také si všimněte dvojtečky na začátku :result v bloku, což znamená, že se jedná o proměnnou vazby, nikoli o lokální proměnnou PL/SQL.



  1. SQL Získejte celý řádek na základě minimální hodnoty počítaného sloupce

  2. Django South Error:AttributeError:Objekt 'DateTimeField' nemá atribut 'model'`

  3. INSERT IGNORE INTO a cizí klíče MySQL

  4. Jak mohu vyčistit dočasné tabulky na mysql