我工作的数据的迁移从旧系统到我们的新的应用程序(在Oracle数据库10gR2中运行)。作为迁移的一部分,我正在研究一个脚本,该脚本将数据插入到应用程序使用的表中。继续在插入时,甲骨文将引发异常
被导入的数据的行数运行到数千,并且源数据是不干净(在NOT NULL列意想不到空值,等等)。因此,在通过脚本插入数据时,无论何时发生此类异常,脚本都会突然结束,并且整个事务将回滚。
有没有一种方法,通过它我可以继续为其行是干净的数据的插入? 使用NVL()
或COALESCE()
是不是一种选择,因为我想记录导致错误,这样的数据可以为下一次被修正的行。
编辑:我目前的程序有一个异常处理程序,我记录导致错误的第一行。是否有可能插入继续而不终止,因为现在在第一个处理的异常处,该过程终止执行。
异常处理程序捕获的第一个错误,然后从程序退出。我如何避免它退出? – Sathya 2009-06-30 20:34:16
@Arnshea是正确的 - 把插入它自己的块内:BEGIN insert ... EXCEPTION handle_exception END; – DCookie 2009-06-30 20:59:58