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

PL/SQLの列を反復処理します

    PL / SQLで表の行を反復処理する最も簡単な方法は、次のようなことを行うことです。

    BEGIN
      FOR employees IN (SELECT emp_id FROM emp)
      LOOP
        dbms_output.put_line( employees.emp_id );
      END LOOP;
    END;
    

    または、この例のように、すべてのEID値をPL / SQLコレクションにフェッチして、コレクションを反復処理することもできます。

    DECLARE
      TYPE emp_id_tbl IS TABLE OF emp.emp_id%type;
      l_emp_ids emp_id_tbl ;
    BEGIN
      SELECT emp_id
        BULK COLLECT INTO l_emp_ids 
        FROM emp;
    
      FOR i IN l_emp_ids .FIRST .. l_empnos.LAST
      LOOP
        dbms_output.put_line( l_emp_ids (i) );
      END LOOP;
    END;
    

    ただし、クエリが数千行を返す可能性がある場合、コレクションにすべてのデータをフェッチすると、必要以上のPGAメモリが使用される可能性があり、LIMIT句を使用して行をチャンクでフェッチする必要があります。しかし、それは現時点では自分たちより進んでいるように思われます。



    1. SQL CASEステートメント:それは何であり、それを使用するための最良の方法は何ですか?

    2. トリッキーなMySQLバッチクエリ

    3. ある範囲の日付の間の日付の取得

    4. SQLSUM関数の使用方法