Механизм ошибок Oracle слишком примитивен, чтобы возвращать набор всех ошибок, которые МОГУТ произойти. Я имею в виду, это крутая мысль, но подумайте, что бы вы сделали, если бы написали код. Ваша стандартная обработка ошибок должна быть сорвана. Вместо того, чтобы возвращать ошибку, как только вы столкнетесь с ней, вам нужно как-то продолжить, чтобы посмотреть, сможете ли вы продолжить, если первая обнаруженная ошибка не была ошибкой вообще. И даже если бы вы сделали все это, вы все равно могли бы столкнуться с вероятностью того, что строка, добавленная вами, которая исправляет первую ошибку, фактически вызывает вторую ошибку.
Например:
A является родителем B, является родителем C. Я откладываю и вставляю C. Я получаю сообщение об ошибке, что родительской записи B нет. Я откладываю и добавляю B. Теперь я получаю еще одну ошибку, что нет A.
Это, конечно, возможно, и заранее сказать невозможно.
Я думаю, вы ищете сервер для выполнения работы, которая действительно является вашей обязанностью. С риском модификации -1 вы используете технику для стрельбы из автоматического оружия под названием «Распыли и молись» - стреляйте как можно больше раундов и надеетесь, что вы убьете цель. Такой подход просто не может работать здесь. Вы отключаете свой RI и делаете кучу шагов и надеетесь, что все RI сработают в конце, когда база данных "оценивает" ваш DML.
Я думаю, вы должны написать код.