开发带有函数结果缓存的应用
开发使用结果缓存函数的应用时,不要对于给定的参数值的集合,假定函数体执行的次数。
在一些情况下,结果缓存函数的函数体需要执行:
n 数据库实例的会话第1次使用这些参数调用该函数。
n 当对于这些参数的缓存结果无效时
n 当对于这些参数的缓存结果过期。如果系统需要内存,则可能会抛弃最老的缓存值。
n 当函数绕过缓存(有多种情况)
结果缓存函数的限制
函数为了成为结果缓存函数,必须满足下面的条件:
n 不是被定义在拥有调用者权限的模块中或匿名块中。
n 不是管道式的表函数
n 不引用数据字典表、临时表、序列和不确定的SQL函数。
n 没用OUT, IN OUT模式的参数
n 没有下列类型的IN模式参数。BLOB、CLOB、NCLOB、REF CURSOR、集合、对象、记录
n 返回值类型不能为BLOB、CLOB、NCLOB、REF CURSOR、对象、包含不支持返回类型的记录或集合。
建议结果缓存函数也满足下面的要求:
n 没有副作用
n 不依赖于特定会话的设置
n 不依赖于特定会话的应用上下文
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1132833/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/17013648/viewspace-1132833/