回答

收藏

发生异常时在Oracle中继续插入

技术问答 技术问答 133 人阅读 | 0 人回复 | 2023-09-13

我正在将数据从旧版系统迁移到我们的新应用程序(在Oracle数据库10gR2上运行)。作为迁移的一部分,我正在研究一个脚本,该脚本将数据插入应用程序使用的表中。  q( v9 U8 }9 f" m5 B2 m) M
导入的数据行数成千上万,并且源数据不是干净的(NOT5 i- S3 q; N. Q; L+ Z
NULL列中的异常为空,等等)。因此,在通过脚本插入数据时,每当发生此类异常时,脚本就会突然结束,并且整个事务都会回滚。; T; Z- u. Q) Z$ Y
有没有一种方法可以继续插入行干净的数据?使用NVL()或COALESCE()不是选项,因为我想记录导致错误的行,以便下次通过时可以更正数据。9 h3 W5 X0 i4 v0 M6 L/ n+ Q. b
编辑:我当前的过程有一个异常处理程序,我正在记录导致错误的第一行。插入是否可以继续而不会终止,因为现在在第一个处理的异常上,该过程将终止执行。
: _  ~! ^8 F/ s7 i                  z" r( J2 r8 H4 B' L
解决方案:6 `) T  f0 N. y. K! _( R9 g
               
, e0 w3 S: j% t6 E$ V( V6 z. D! p% d
1 B+ G0 a( w% t, E+ T/ S
                使用PLSQL,您可以在自己的事务中执行每个插入操作(每个操作之后执行COMMIT),并使用继续运行的异常处理程序记录或忽略错误。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则