У меня есть скрипт, который использует один VARRAY несколько раз. Но я не могу понять, как сбросить VARRAY после того, как прокрутил его один раз. Я написал следующий базовый скрипт, чтобы помочь мне устранить неполадки:
DECLARE
TYPE multi_show_id_type IS VARRAY (60) OF VARCHAR2 (10);
multi_show_id multi_show_id_type := multi_show_id_type ();
counter NUMBER := 1;
i NUMBER := 1;
BEGIN
DBMS_OUTPUT.put_line ('BEGIN');
WHILE i < 10
LOOP
DBMS_OUTPUT.put_line (i);
--counter:=0;
--multi_show_id :=multi_show_id_type();
--multi_show_id.delete;
WHILE counter < 25
LOOP
multi_show_id.EXTEND ();
multi_show_id (counter) := counter * counter;
DBMS_OUTPUT.put_line ('VArray: [' || counter || '] [' || multi_show_id (counter) || ']');
counter := counter + 1;
END LOOP;
i := i + 1;
END LOOP;
DBMS_OUTPUT.put_line ('END');
END;
/
Этот скрипт работает, когда он проходит через массив только один раз. Но если вы раскомментируете строку counter:=0
, что заставит ее пройти через цикл заполнения массива 10 раз, я получу ошибку ORA-06532
. Вы можете увидеть кое-что из того, что я пробовал, в других строках комментариев. Любая помощь будет оценена по достоинству.