ORA-23350: maximum number of recursive calls exceeded

文档解释

ORA-23350: maximum number of recursive calls exceeded

Cause: This usually occurs when trying to resolve conflicts in a table while concurrent updates to the same row create more conflicts.

Action: Re-execute the deferred transaction from DefError using dbms_defer_sys.execute_error

ORA-23350:最大递归调用数量超过限制。

这是由于在同一事务中已达到最大重复调用限制(称为递归调用)而generate的Oracle错误。

官方解释:

使用超出了最大递归深度(MAXRECURSION)的嵌套调用语句。该错误可能是由修改MAXRECURSION持续变量而引起的,或由公开函数中嵌套调用引起的。递归调用是在程序中引用它自身的步骤。

常见案例

将大量数据从表A中插入表B时,可能会发出ORA-23350的错误,因为SQL的递归调用次数已达到最大值。

一般处理方法及步骤

1. 识别哪一个字段/函数开始了递归,并分析此字段/函数调用了哪些函数。

2. 根据实际情况修改递归函数中的参数或逻辑,以减少递归次数。

3. 如果需要,增加最大递归深度限制(MAXRECURSION)的变量的值。

4. 重新编译已修改的字段/函数。

你可能感兴趣的