Я работаю над переносом данных из старой системы в наше новое приложение (работает на базе Oracle Database 10gR2). В рамках миграции я работаю над скриптом, который вставляет данные в таблицы, которые используются приложением.Продолжающиеся вставки в Oracle при возникновении исключения
Число строк данных, которые импортируются, составляет тысячи, а исходные данные не являются чистыми (неожиданные значения нулей в столбцах NOT NULL и т. Д.). Поэтому, вставляя данные через скрипты, всякий раз, когда возникает такое исключение, скрипт заканчивается внезапно, и вся транзакция откатывается назад.
Есть ли способ, по которому я могу продолжать вставлять данные, для которых строки чисты? Использование NVL()
или COALESCE()
не является вариантом, так как я хотел бы регистрировать строки, вызывающие ошибки, чтобы данные могли быть исправлены для следующего прохода.
EDIT: В моей текущей процедуре есть обработчик исключений, я регистрирую первую строку, которая вызывает ошибку. Было бы возможно, чтобы вставки продолжались без прерывания, потому что прямо сейчас при исключении с первой обработкой процедура завершает выполнение.
обработчик исключений улавливает первую ошибку, а затем выходит из процедуры. Как я могу удержать его от выхода? – Sathya
@ Арнеша правая - вставьте вставку внутри собственного блока: BEGIN insert ... EXCEPTION handle_exception END; – DCookie
Спасибо, внедрил это и многое поможет. – Sathya