Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle SQL INSERT:我可以报告触发Oracle异常的值吗?_Sql_Oracle_Plsql_Ora 12899_Ora 02291 - Fatal编程技术网

Oracle SQL INSERT:我可以报告触发Oracle异常的值吗?

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

我正在编写我的第一个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权限之间进行选择这是否正确?


谢谢大家!

你只有一条例外信息,据我所知,你无法获得任何其他信息。您需要做的是通过在表a上运行查询来检查数据是否有效,从而避免SQL异常。使用错误日志记录表也可以让SQL(嗯,Oracle)完成它的工作。如果您自己不能运行DDL,那么最好要求为您创建DDL;否则,据我所知,你会被单一插入所困扰。