在oracle中缓存子查询是否总是返回相同的值?

在oracle中缓存子查询是否总是返回相同的值?,oracle,cursor,subquery,Oracle,Cursor,Subquery,如下面的游标定义所示,where子句中的子查询始终返回相同的值,对于a1、p1的每个唯一值,oracle是对这些值执行缓存,还是每次执行外部查询时都执行子查询,请注意,这里的查询是在参数化游标内执行的 cursor cur(a1 , p1) is select a , b from table1 where a = a1 and b in (select p from table2 where q = p1); 可能会涉及缓存,但在技术层面上。如果数据库中的任何

如下面的游标定义所示,where子句中的子查询始终返回相同的值,对于a1、p1的每个唯一值,oracle是对这些值执行缓存,还是每次执行外部查询时都执行子查询,请注意,这里的查询是在参数化游标内执行的

cursor cur(a1 , p1)  
is
  select a , b  
  from table1 
  where a = a1
  and b in (select p from table2 where q = p1);   

可能会涉及缓存,但在技术层面上。如果数据库中的任何地方有-committed-change,这将导致子查询选择不同的数据,那么将提供新数据。Oracle在这方面非常正确:如果提交了新数据,您将获得新数据。数据缓存不好,这在Web服务器上很常见,它们会继续在屏幕上获取旧数据,即使服务器上的数据因浏览器而发生更改,但Oracle数据库不会发生这种情况。除非您自己有一个未限制的会话。是否有办法强制oracle使用子查询中的旧数据而不刷新缓存?