如何解决:SQL错误:ORA-00604:递归SQL级别1发生错误

问题描述 投票:0回答:4

当我尝试删除表时出现错误

SQL Error: ORA-00604: error occurred at recursive SQL level 2
ORA-01422: exact fetch returns more than requested number of rows
00604. 00000 -  "error occurred at recursive SQL level %s"
*Cause:    An error occurred while processing a recursive SQL statement
           (a statement applying to internal dictionary tables).
*Action:   If the situation described in the next error on the stack
           can be corrected, do so; otherwise contact Oracle Support.
java oracle oracle11g drop-table
4个回答
1
投票

一种可能的解释是为每个

DROP TABLE
语句触发的数据库触发器。要查找触发器,请查询
_TRIGGERS
字典视图:

select * from all_triggers
where trigger_type in ('AFTER EVENT', 'BEFORE EVENT')

禁用任何可疑的触发器

   alter trigger <trigger_name> disable;

并尝试重新运行您的

DROP TABLE
语句


1
投票

我注意到以下错误行。

exact fetch returns more than requested number of rows

这意味着 Oracle 期望得到一行,但它得到的是多行。并且,只有双表具有该特性,它仅返回一行。

后来我想起来,我在dual table以及执行dual table的时候做了一些改动。然后发现多行。

因此,我截断了

dual
表并仅插入了
X
值的行。而且,一切正常。


1
投票

我知道该帖子已经过时并已解决,但也许有人正在面临或将面对我的情况,所以我想在处理错误一周后将所学到的知识留在这里。我遇到了错误:“ORA-00604:错误发生在递归SQL级别1”,但内部错误:“ORA-06502:错误:字符串缓冲区太小数字或值”,只有当我尝试登录数据库,并使用特定的驱动程序,尝试从 Visual Studio C# 应用程序连接,那一刻最奇怪的事情是我从 SQLDeveloper 或 TOAD 连接,一切正常。 后来我发现我的机器名有这种格式“guillermo-aX474b5”,然后我继续将其重命名为“guillermo”,没有“-”和其他东西,它成功了!看起来在某些驱动程序和情况下,ORACLE 数据库不喜欢登录连接中的“-”。

希望有帮助!


0
投票

我在 Windows 中也遇到了同样的问题。

通过将区域格式更改为

English(United States)
解决了问题,可能解决方案可能有点有线,但它有效。

© www.soinside.com 2019 - 2024. All rights reserved.