每次调用时都会编译oracle函数吗?

时间:2018-06-27 06:07:24

标签: oracle function plsql

前段时间,我在一个门户网站上读到说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';

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

所以看来我以前读的内容不正确,但是我只是想确认一下。

2 个答案:

答案 0 :(得分:1)

Quote from the manual

  

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

答案是:它们仅被编译一次(当您运行CREATE语句时)

与软件包相同的is true

答案 1 :(得分:0)

Oracle函数肯定不会每次都编译。那将是非常低效的。