How to solve : SQL Error: ORA-00604: error occurred at recursive SQL level 1

How to solve : SQL Error: ORA-00604: error occurred at recursive SQL level 1

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

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.

一个可能的解释是数据库触发器为每个 DROP TABLE 语句触发。要查找触发器,请查询 _TRIGGERS 字典视图:

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

使用

禁用任何可疑触发器
   alter trigger <trigger_name> disable;

并尝试重新运行您的DROP TABLE声明

我注意到下面一行错误。

exact fetch returns more than requested number of rows

这意味着 Oracle 期待一行,但得到多行。而且,只有双table有那个特性,returns只有一行。

后来回想起来,我在dual table 和执行dual table 时都做了一些改动。然后发现多行。

因此,我截断了 dual table 并仅插入了 X 值的行。而且,一切正常。

我能够通过清除删除来解决 "ORA-00604: error"。

DROP TABLE tablename PURGE