首页 > 解决方案 > oracle函数每次调用时都会编译吗?

问题描述

我前段时间在一个门户网站上读到,每次调用它时都会编译 oracle 函数,但是当我今天对其进行测试时,事实证明并非如此。我创建了一个简单的函数,如下所示

Create or replace function foo (p_in IN integer ) return integer
is
begin
  return p_in + 5;
end;

当我编译它时,我记下了以下查询的值

selectc last_ddl_time , timestamp from dba_objects where object_name = 'FOO';

我执行了几次,然后再次检查了上面没有改变的查询的输出。

因此,我之前阅读的内容似乎不正确,但我只是想确认一下。

标签: oraclefunctionplsql

解决方案


从手册中引用

每个子程序都以可执行的形式编译和存储,可以重复调用。

所以答案是:它们只编译一次(当你运行CREATE语句时)

包也是如此


推荐阅读