我的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加载到内存中?什么时候编译包?什么时候第一次打电话?是不是一次被召唤?有没有更好的方法来实现静态查找数组?
谢谢!
您可以参考以下链接:http: //www.dba-oracle.com/plsql/t_plsql_lookup_tables.htm
"这意味着在程序包初始化期间执行该过程.因此,在会话的生命周期中,除非需要刷新缓存的表,否则永远不会手动调用该过程."