sql >> データベース >  >> RDS >> Oracle

プロシージャによって返されたREFCURSORからのフェッチと一括収集

    forでカーソル変数を使用することは許可されていません カーソルループ(FOR i IN myCursor )。 FETCH INTOを使用して、カーソル変数から一度に1行ずつ明示的にフェッチする必要があります。 たとえば、ステートメントと通常のループステートメントを使用するか、FETCH BULK COLLECT INTOを使用します コレクションにデータを入力します。例:

    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. 'having句'の不明な列

    2. PostgreSQL:非常に大きな数値の16進文字列をNUMERICに変換します

    3. テーブルデータを出力するmysqlphp

    4. SQLサーバーのdoubleを表すものは何ですか?