刚刚工作时遇到过一个问题,用临时表导初始化数据,存储过程执行成功,但是正式表中一直没有数据。
发现是因为建临时表时create global temporary table TABLE_A (COL_1 NUMBER)或create global temporary table TABLE_A as select * from TABLE_B没有指定用哪种类型,默认为ON COMMIT DELETE ROWS,说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行)
改成ON COMMIT PRESERVE ROWS就可以了,ON COMMIT PRESERVE ROWS说明临时表是会话指定,会话中断时ORACLE将截断表。