【发布时间】:2014-01-08 08:06:08
【问题描述】:
我的 java 用户收到“找不到单元”错误,但我的包是有效的。 另一篇文章提出了根本原因:我的包不能是无状态的。这是有道理的,但我不清楚 Oracle 对无状态的真正定义:
如果我从包的 SPEC 中删除所有声明的类型,它是否有资格成为无状态,还是我还必须从主体中删除所有 GLOBAL 变量?
以下是 Oracle 对无状态的定义:
“包声明的变量、常量和游标的值(在其规范或主体中)构成了它的包状态。如果 PL/SQL 包声明了至少一个变量、常量或游标,那么包是有状态的;否则,它是无状态的。”
这与这篇文章中提出的问题相同:
【问题讨论】:
-
如果应用打开了一个活动会话,并且调用了以前引用的包,同时有人重新编译了包,就会发生这种情况。你做了很多重新编译吗?
-
下面的答案总结得很好,但要点是包部署应该与应用程序部署绑定。