Pragma UDF 是如何工作的?

How Pragma UDF works?

最近看了Oracle Database 12中的UDF Pragma优化方法。

我对它的工作原理非常感兴趣。我只在 Oracle documentation 中找到了非常简短的描述。

据我了解,PL/SQL 中的每个 Pragma 都是某种类似于 C++ Pragma Directives 的编译器指令(我在这里可能是错的)。

也许有人可以更详细地向我解释(或提供链接:))UDF Pragma 的内部机制是如何工作的?

我们无法使用内部结构,但本质上,pragma 是指示编译器专注于减少 PL/SQL => SQL 上下文切换开销的成本的指令。如果我不得不假设,我会说它利用了不同的 12c 特性,允许 PL/SQL 直接在 CTE(常见的 table 表达式)中,例如:

WITH 
  function myfunction(x int) return int as
  begin
    ...
    return ...
  end;
select myfunction(col) from my_table

PL/SQL 像上面这样编码的函数仅在 SQL 执行期间存在,并且与独立函数相比具有改进的性能特征。所以我怀疑 UDF pragma 允许通过与上面的内联示例相同的代码路径调用独立函数。

(不过都是我的假设)