У меня есть скрипт, который использует один 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
. Вы можете увидеть некоторые вещи, которые я пробовал в других комментариях. Любая помощь будет оценена.