这是我第一次尝试创建一个包,所以我必须错过一些非常明显的东西(我用Google搜索的内容似乎甚至不值得一提).
显然,如果您的包体中有未包含在规范部分中的过程,那么这些过程是私有的.我遇到的问题是,一旦我制作了私有包,我似乎无法弄清楚如何引用这些私有包.并且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;
Run Code Online (Sandbox Code Playgroud)
我也试过把它称为testPackage.privateProc,但也没有用.
我究竟做错了什么?
Mar*_*ark 15
我想你应该这样做:
CREATE OR REPLACE PACKAGE BODY testPackage AS
PROCEDURE privateProc; --Forward declaration
PROCEDURE publicProc IS
BEGIN
privateProc();
END;
PROCEDURE privateProc IS
BEGIN
DBMS_OUTPUT.PUT_LINE('test');
END;
END testPackage;
Run Code Online (Sandbox Code Playgroud)
只需将privateProc称为语言的一部分即可.Execute用于在PL/SQL中运行DML或SQL.
| 归档时间: |
|
| 查看次数: |
23758 次 |
| 最近记录: |