我有一个名为TEST_FUNCTION 的sql函数,它在调用时将数据发布到名为GLOBAL_TEMP的全局临时表。当我调用该函数时,如果数据发布到GLOBAL_TEMP表,则返回字符串“SUCCESS”。然后,当我从GLOBAL_TEMP表中选择数据时,它不提供数据。据我所知,我必须保持用于调用函数TEST_FUNCTION的相同会话来访问GLOBAL_TEMP表中的数据,因为它是使用命令 on commit delete rows 创建的。
我的问题是如何在java代码中处理这个问题?(在java中保持相同的ORACLE会话以访问数据)
答案 0 :(得分:0)
ON COMMIT DELETE ROWS就是这个意思。数据仅在同一事务中可见,并且只要数据被COMMIT,表就会被截断。
要读取您需要的数据,以确保没有介入的COMMIT,并且您使用相同的会话。
检查您的代码并检查JDBC设置,以便在每次声明后都不会自动提交。
还要记住,任何DDL语句都会强制提交。