Добавьте этот фрагмент в свой блок, чтобы увидеть причину. ORA-01403:
...
EXCEPTION
WHEN no_data_found THEN
dbms_output.put_line(sqlerrm);
END;
Ваш l oop не l oop из-за действующих индексов массива. Он возвращается с -1 .. 100
, и когда вы пытаетесь получить доступ к table1(3)
, ну, вы не можете.
В качестве альтернативы, вы можете запустить это:
FOR i IN table1.FIRST .. table1.LAST LOOP
IF table1.EXISTS(i) THEN
dbms_output.put_line(table1(i));
END IF;
END LOOP;
Но это не очень хорошая идея потому что совершенно неэффективно, чтобы l oop через все целочисленные значения, которые вы уже знаете, не являются индексами вашего ассоциативного массива.