甲骨文功能函数中确定的测试

如果函数经常对于上述情况产生确定的记录,可以在
,,函数声明中用确定性,这样ORACLE会自动在内存中缓存这些记录集,如果不确定,
,,产生的结果就会不确定了
,,,,,,,,,1,概念及含义
,,,,,,,,,,,,,1、语法
,,,,,,,,,,,,,,,,,创建或替换函数SCHEMA.FUNTION_NAME
,,,,,,,,,,,,,,,,,(在NOC0PY数据类型参数)
,,,,,,,,,,,,,,,,,返回DATETYPE
,,,,,,,,,,,,,,,,,确定性
,,,,,,,,,,,,,,,,,是
,,,,,,,,,,,,,,,,,
开始,,,,,,,,,,,,,,,,,结束;
,,,,,,,,,,,,,,2、指定确定的用于,对于调用多次同一参数相同值的过程,返回相同的结果时
,,,,,,,,,,,,,,3,如果你在基于函数的索引相关的表达式或者对刷新速度及启用查询重写的物化视图相关的查询
,,,,,,,,,,,,,,,,,必须要指定确定的关键字。
,,,,,,,,,,,,,,4,如果以后变更了上述表达式的定义,必须手工重建物化视图或者基于函数的索引
,,,,,,,,,,,,,,5,如果一个函数使用包变量,或者访问数据库的方能会影响函数的结果集,则不要用确定性
,,,,,,,,,,,,,,6、使用确定性语句的语义规则,此处皆指是定义或声明而非使用
,,,,,,,,,,,,,,,,,,,,1,可以在最顶级的子程序中,指包中
,,,,,,,,,,,,,,,,,,,,2,可以在包规范即包级的子程序中,但不能在包体中,指包的子程序声明中
,,,,,,,,,,,,,,,,,,,,3,不能在一个私有子程序中(子程序:另一个子程序内部或一个包体内部),即包体或另一个子程序中的子程序
,,,,,,,,,,,,,,,,,,,,4,一个有确定性的子程序能调用另一个子程序,
,,,,,,,,,,,,,,,,,,,,,,,不管被调用的子程序是否声明确定性
,,,,,,,,,2,示例
,,,,,,,,,,,,,1、创建或替换函数text_length (CLOB)
,,,,,,,,,,,,,,,,返回数量确定的
,,,,,,,,,,,,,,,,
开始,,,,,,,,,,,,,,,,,,,返回DBMS_LOB.GETLENGTH (a),
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2,自己编写的示例
,,,,,,,,,,,,,,,,,1、完成;desc t_deterministic;
,,,,,,,,,,,,,,,,,,,,名称,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,是否为空?类型
,,,,,,,,,,,,,,,,,,,,- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,A ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,CHAR (2)
,,,,,,,,,,,,,,,,,,,null

甲骨文功能函数中确定的测试