在程序包主体或规范中使用常量的一个缺点是,当您重新编译程序包时,在PGA中具有程序包状态的任何
用户会话都将获得ORA-04068.因此,在一个大的开发环境中,我们采用了一个单独的spec-only包来保存每个包的常量(如果有的话).然后,我们会强加一条规则,指出这些仅限规范的包仅允许被其“拥有”包引用 – 这是我们在
代码审查中执行的.不是一个完美的
解决方案,但它在我们当时工作.
出于同样的原因,我永远不会推荐一个常规的包规则,因为每次有人需要引入新常量或修改现有的常量时,所有用户会话都会获得ORA-04068.