ORA-00604: 递归 SQL 层 1 出现错误 首先要查一下错误信息, 可以从手册中查: Cause: An attempt was made to access a transactional temporary table that has been already populated by a concurrent transaction of the same session.Action: Do not attempt to access the temporary table until the concurrent transaction has committed or aborted. 这是由临时表导致的 --ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行) --ON COMMIT PRESERVE ROWS 说明临时表是会话指定,当中断会话时ORACLE将截断表。 举个例子 开一Session(不要关闭) create global temporary table tmp_test (col1 varchar2(200)) on commit preserve rows; insert tmp_test values('YYYY'); 再另开一Session 这时就会报 在做数据库升级时要确定没有人在使用这个临时表,设计时也得考虑,三层结构时可以停服务中断访问。 关闭第一个会话,或者更改表的类型 |