Както споменах в моите коментари, можете да използвате BULK
събиране и LIMIT
опция за постигане на вашите изисквания. Вижте демонстрацията по-долу. Тук всеки път цикълът ще се изпълнява и ще избира 200
записи.
DECLARE
CURSOR rec
IS
SELECT LEVEL
FROM DUAL
CONNECT BY LEVEL < 401;
TYPE v_var IS TABLE OF NUMBER
INDEX BY PLS_INTEGER;
var v_var;
BEGIN
OPEN rec;
LOOP
FETCH rec BULK COLLECT INTO var LIMIT 200;
EXIT WHEN (var.count = 0);
FOR i IN 1 .. var.COUNT
LOOP
DBMS_OUTPUT.put_line (var (i));
END LOOP;
END LOOP;
CLOSE rec;
END;