为RESULT_CACHE清空RELIES_ON

zer*_*kms 5 oracle oracle11g oracle11gr2

我在RESULT_CACHE函数内部有一个查询.

因此,当表更改时 - 我的缓存无效并再次执行函数.

我想要的是实现依赖于输入参数的函数,并且不依赖于任何隐式依赖(如表等).

是否可能(没有动态sql)?

Vin*_*rat 2

仅依赖于其参数的函数可以声明为 DETERMINISTIC。在某些情况下,该函数的结果将被缓存。OTN 论坛上的此主题展示了如何将确定性函数结果缓存在 SQL 语句中。

从 10gR2 开始,函数结果不会跨 SQL 语句进行缓存,也不会在 PL/SQL 中缓存。不过,如果您在 SELECT 中调用某个函数(该函数可能会被多次调用),则此缓存功能仍然很有用。

我现在没有可用的 11gR2 实例,因此我无法测试 RESULT_CACHE 功能,但是您是否考虑过依赖于固定虚拟表(例如永远不会更新的表)来声明您的函数?