2

在数据访问限制方面,Oracle 函数中deterministic并行启用子句有什么区别?

4

1 回答 1

5

CREATE FUNCTION 语句的文档中所述

确定性

表示每当使用相同的参数值调用该函数时,该函数都会返回相同的结果值。

...

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

并行启用子句

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

...

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

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

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

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

于 2013-06-29T15:43:09.007 回答