何时执行PL/SQL包开始/结束块之间的代码?

Kev*_*ock 4 plsql oracle10g

我的PL/SQL代码类似于以下代码段:

create or replace
package body MY_PACKAGE as
    type array_type is table of char index by varchar2(1);
    lookup_array array_type;

    function DO_SOMETHING(input nvarchar2) 
    return varchar2 as
    begin
        -- Do something here with lookup_array
    end DO_SOMETHING;

    procedure init_array as
    begin
        lookup_array('A') := 'a';
        lookup_array('B') := 'b';
            -- etc
    end init_array;
begin
    init_array;
end MY_PACKAGE;
Run Code Online (Sandbox Code Playgroud)

它使用静态查找数组来处理提供给DO_SOMETHING的数据.我的问题是,什么时候调用init_array并将lookup_array加载到内存中?什么时候编译包?什么时候第一次打电话?是不是一次被召唤?有没有更好的方法来实现静态查找数组?

谢谢!

dcp*_*dcp 5

您可以参考以下链接:http: //www.dba-oracle.com/plsql/t_plsql_lookup_tables.htm

"这意味着在程序包初始化期间执行该过程.因此,在会话的生命周期中,除非需要刷新缓存的表,否则永远不会手动调用该过程."