Oracle SQL INSERT:我可以报告触发Oracle异常的值吗?
我正在编写我的第一个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权限,并且知道我无法获得任何DDL权限;我只有像INSERT/UPDATE/SELECT这样的DML和查询。不幸的是,像“创建日志表”这样的解决方案是不可能的 更新:我的问题的第二部分:阅读,我开始认为即使跳过无效插入并继续使用有效插入,也不可能使用直接SQL和无DDL访问(在写上面的问题之前,我假设这是可能的)。看起来我必须在遍历表A的行、一次执行一个INSERT调用和请求特殊DDL权限之间进行选择这是否正确?Oracle SQL INSERT:我可以报告触发Oracle异常的值吗?,sql,oracle,plsql,ora-12899,ora-02291,Sql,Oracle,Plsql,Ora 12899,Ora 02291,我正在编写我的第一个PL/SQL脚本 在我编写的批处理脚本中,我将表a的“注释”字段中的数据插入表B的一列,该列具有各种完整性约束(因此担心ORA-12899-值太长,或ORA-02291-值不允许) 如果试图在表B中插入值引发异常,我想使用标准输出不仅报告必须跳过插入,而且报告表a的哪些内容导致跳过插入 我知道我可以按程序循环表A的数据,基本上每次调用1个INSERT,报告引发该调用异常的任何数据的值。但如果可能的话,我希望更接近“让SQL完成它的工作”的原则 当一个直接的SQL语句“INSE
谢谢大家! 你只有一条例外信息,据我所知,你无法获得任何其他信息。您需要做的是通过在表a上运行查询来检查数据是否有效,从而避免SQL异常。使用错误日志记录表也可以让SQL(嗯,Oracle)完成它的工作。如果您自己不能运行DDL,那么最好要求为您创建DDL;否则,据我所知,你会被单一插入所困扰。