【发布时间】:2013-06-24 21:52:53
【问题描述】:
我有一个 pkg 用于保存面向报告的代码 CMS_REPORTS。
我添加了一个返回 ref 游标的过程,并且 pkg 编译得很好,但是当我调用 proc 来测试它时失败: ORA-04063: 包体 "CMS.CMS_REPORTS" 有错误 ORA-06508: PL/SQL: 找不到被调用的程序单元: "CMS.CMS_REPORTS"
我已经删除了 orig proc 并用它替换它以保持简单 - 同样的问题。
过程是这样的:
procedure test_ref_cur(p_testno in number,
p_cur in out ref_cur) as
begin
open p_cur for
select p_testno + 1 from dual;
end test_ref_cur;
我在 pkg 规范中定义了 ref 光标,如下所示:
type ref_cur is ref cursor;
procedure test_ref_cur(p_testno in number,
p_cur in out ref_cur);
我尝试了各种使用 ref cursor 和 sys_refcursor 的组合,但都出现了相同的错误。如果我从 pkg 中删除 proc,它可以正常工作。
我开始认为这是系统问题?
有其他人遇到过这个问题吗?
问候 戴夫
【问题讨论】:
-
你怎么知道包编译了?我见过工具设置,一切看起来都不错,但包实际上并没有被编译,所以只有在显式编译或启动时才会出现问题。
-
show errors为您提供了什么,或者如果您的客户不支持,select * from user_errors where type like 'PACKAGE%' and name = 'CMS_REPORTS'?你所展示的对我来说编译和运行都很好,所以图片中缺少一些东西。
标签: oracle compilation compiler-errors package