我正在编写我的第一个 PL/SQL 脚本。
在我正在编写的批处理脚本中,我将表 A 的“注释”字段中的数据插入到表 B 的具有各种完整性约束的列中(因此担心 ORA-12899 - 值太长或 ORA -02291 - 不允许值)。
如果尝试将值插入表 B 引发异常,我想使用标准输出来报告不仅必须跳过插入,而且表 A 的哪些内容导致跳过插入。
我知道我可以在程序上循环遍历表 A 的数据,基本上一次调用 1 个 INSERT,报告任何引发该调用异常的数据的值。但如果可能的话,我想更贴近“让 SQL 做它的工作”的原则。
当直接 SQL “INSERT INTO {Table B} SELECT FROM {Table A}”引发异常时,有什么方法可以显示表 A 中的数据?
注意:我对数据库没有任何 DDL 权限,并且知道我无法获得任何权限;我只有 DML 和查询,如 INSERT/UPDATE/SELECT。因此,不幸的是,像“创建日志表”这样的解决方案是不可能的。
更新:我的问题的第二部分:阅读问题 1065829,我开始认为,即使是跳过无效插入并继续进行有效插入也是不可能的,直接 SQL 和没有 DDL 访问(我认为这是在写我上面的问题之前可能)。看起来我将不得不在遍历表 A 的行、一次执行一个 INSERT 调用以及请求特殊 DDL 权限之间做出选择。 这个对吗?
谢谢!