Oracle中带有函数的DETERMINISTIC和PARALLEL_ENABLED之间的区别

Vam*_*hna 2 oracle plsql function

就数据访问限制而言,Oracle函数中deterministic并行启用子句并行启用子句有何区别?

Ben*_*Ben 5

如在CREATE FUNCTION语句文档中所述

确定性

指示函数在调用时使用相同的参数值返回相同的结果值。

...

不要指定此子句来定义使用包变量或以任何可能影响函数返回结果的方式访问数据库的函数。如果数据库选择不重新执行该功能,则不会捕获这样做的结果。

parallel_enable_clause

指示该函数可以从并行查询操作的并行执行服务器运行。该函数不得使用会话状态,例如包变量,因为这些变量不一定在并行执行服务器之间共享。

...

  • 可选的streaming_clause允许您通过指定的列列表对并行处理进行排序或聚集。

    • ORDER BY指示并行执行服务器上的行必须在本地排序。

    • CLUSTER BY指示并行执行服务器上的行必须具有与column_list指定的键值相同的键值。

如果需要,这是两个完全不同的选项。区别是绝对的,无论可能存在什么限制,因为它们不是同一回事。