sql >> Database >  >> RDS >> Oracle

Ophalen en bulksgewijs ophalen van een REF-CURSOR die is geretourneerd door een procedure

Het is niet toegestaan ​​om cursorvariabelen te gebruiken in de for cursorlus (FOR i IN myCursor ). Je moet expliciet één rij per keer uit de cursorvariabele halen, met behulp van FETCH INTO statement en regular loop statement bijvoorbeeld of gebruik FETCH BULK COLLECT INTO om een ​​collectie te vullen. Bijvoorbeeld:

SQL> declare
  2    TYPE t_clientID_nt IS TABLE OF dual%rowtype;
  3    clientID_nt t_clientID_nt;
  4  
  5    l_cur sys_refcursor;
  6  
  7    procedure OpenAndPopulateCursor(p_cur in out sys_refcursor) is
  8    begin
  9      open p_cur for
 10        select *
 11         from dual;
 12    end;
 13  
 14  begin
 15    OpenAndPopulateCursor(l_cur);
 16  
 17    if l_cur%isopen
 18    then
 19      fetch l_cur bulk collect into clientID_nt;
 20    end if;
 21  
 22    dbms_output.put_line(concat( to_char(clientID_nt.count) 
 23                               , ' record(s) has/have been fetched.'));
 24  end;
 25  /

 1 record(s) has/have been fetched.

 PL/SQL procedure successfully completed



  1. Hoe u het verschil tussen twee datums kunt afronden naar uren

  2. PL/SQL-pakketcode aanroepen in een Java-programma

  3. Gegevens van javascript naar een mysql-database verzenden

  4. MySQL-zoekopdracht om koppeltekens te negeren