原本没问题的程序执行的时候报错ORA-06508,全局变量的问题
今天在测试代码时,原本执行正常的程序报了一个错:
ORA-06508: PL/SQL: 无法找到正在调用 的程序单元
我具体的操纵是这样几步:
1、打开一个session执行测试程序。
2、打开另一个会话修改测试程序并编译。
3、回到第一个会话继续执行测试程序,这个时候程序里没有改动过的部分也会报错。
出现这种情况的原因是因为,对于全局变量,每一个session会生成一个本地copy,如果程序重新编译的话,就会因程序里原变量找不到而丢弃该变量,继而导致这个错误。
所以上述操作解释为:
1、新开一个session执行程序时,生成一个程序变量的copy。
2、重新编译程序,全局变量重新生成。
3、重新执行程序时,发现变量已经失效,并报错。