-1

140000行のEMPというテーブルが1つあり、データ全体をコレクションに保持する必要があります.コレクションを拡張し、「BULK COLLECT ..LIMIT」句機能を使用してデータ全体をコレクションにロードする方法.

データが新しいレコードで上書きされたため、以下のロジックは必要な結果を提供しません。ロジックを提案してください。

DECLARE 
    CURSOR c_get_employee IS 
      SELECT empno, 
             ename, 
             deptno, 
             sal 
      FROM   emp; 
    TYPE t_employee 
      IS TABLE OF c_get_employee%ROWTYPE INDEX BY inary_integer; 
    l_employee T_EMPLOYEE; 
BEGIN 
    OPEN c_get_employee; 

    LOOP 
        FETCH c_get_employee bulk collect INTO l_employee limit 300; 

        EXIT WHEN l_employee.count = 0; 
    END LOOP; 

    CLOSE c_get_employee; 

    FOR i IN 1..l_employee.count LOOP 
        dbms_output.Put_line (L_employee(i).ename 
                              ||'<-->' 
                              ||L_employee(i).sal); 
    END LOOP; 
EXCEPTION 
    WHEN OTHERS THEN 
      dbms_output.Put_line ('Unexpected error :- ' 
                            || SQLERRM); 
END; 
4

2 に答える 2