【发布时间】:2009-05-29 05:20:09
【问题描述】:
这是我第一次尝试创建一个包,所以我一定遗漏了一些非常明显的东西(我用谷歌搜索过的东西似乎都不值得一提)。
显然,如果您的包主体中有未包含在规范部分中的过程,那么这些过程是私有的。我遇到的问题是,一旦我制作了这些私有包,我似乎无法弄清楚如何引用这些包。而且 SQL Developer 拒绝给我任何比“执行完成并发出警告”更有用的消息,这无济于事......
例如,这是我一直在尝试但不起作用的方法(只是抛出上述编译器错误):
CREATE OR REPLACE PACKAGE BODY testPackage AS
PROCEDURE privateProc; --Forward declaration
PROCEDURE publicProc IS
BEGIN
EXECUTE privateProc();
END;
PROCEDURE privateProc IS
BEGIN
DBMS_OUTPUT.PUT_LINE('test');
END;
END testPackage;
我也尝试将其称为testPackage.privateProc,但也没有用。
我做错了什么?
【问题讨论】:
-
这很有帮助。我正确地拨打了电话,但我不知道我需要“前向声明”。
-
@end-user - 仅当我们在调用私有过程之前不声明私有过程时才需要前向声明。就我个人而言,我发现以正确的顺序声明程序比给自己一个额外的签名来维护更容易。
-
另一个好处是,如果您事先实现该过程,而不是仅仅声明它,您可以获得参数的代码建议。至少在 Toad 中是这样的。