文档解释
ORA-13189: recursive SQL parse failed
Cause: This is an internal error.
Action: Record the error messages that are returned and contact Oracle Support Services.
ORA-13189表明数据库在尝试分析(解析)一个SQL 时遇到递归调用的停止点。官方解释是:“数据库引擎在尝试识别一个SQL 命令时失败,因为它用到了另一个SQL调用,而这个其它调用又用到另一个调用……等等。”
常见案例
1. 使用PL/SQL 调用: 当尝试从 PL/SQL 中调用另一个文件时,该文件可能会调用另一个文件,如果这个情况被一直推类去后,ORA-13189 错误可能发生。
2. 混合SQL语句:当混合使用DDL/DML 或DCL/sQL 语句时,也可能发生ORA-13189 错误。特别是当执行了创建或删除查询结果集时,此错误更可能出现。
正常处理方法及步骤
1. 检查SQL 语句: 检查SQL 中最后一个调用来确定是否出现了调用另一个调用的情况。
2. 重新调用方式: 代替从一块调用另一个,把被调用的SQL 语句写成一个块。
3. 更改调用方式: 更改调用方式为整体调用,代替把 SQL 语句写成一块。
4. 重写 SQL 语句:无论是上述调用方式还是重新调用方式,同时重写 SQL 语句也是一个不错的方式,可以避免出现递归调用的情况。