我没有得到下面给出的Oracle包代码中的错误:



当我试图执行此代码时,我会收到以下错误。我无法解决这个问题——我缺少什么?

显示错误;程序包BODY PKG_VIEW_LEDGER错误:行/列错误-------------------------------------------------------------------------0/0 PL/SQL:编译单元分析已终止1/14 PLS-00304:如果没有"PKG_VIEW_LEDGER"的规格1/14 PLS-00905:对象SYSTEM.PKG_VIEW_LEDGER无效

---以下代码---

CREATE OR REPLACE  PACKAGE PKG_VIEW_LEDGER AS
        TYPE cur_view_data is REF CURSOR;
        PROCEDURE sp_view_ledger(person IN VARCHAR2, cur_inout IN OUT cur_view_data);
END PRG_VIEW_LEDGER;
/
CREATE OR REPLACE PACKAGE BODY PKG_VIEW_LEDGER AS
PROCEDURE sp_view_ledger( person IN VARCHAR2, cur_inout IN OUT cur_view_data)
IS
    tmp_cursor cur_view_data;
BEGIN
    OPEN tmp_cursor FOR
        select * from ledger where person like '%" + myArg.ToUpper + "%';
    cur_inout := tmp_cursor;
END sp_view_ledger;
END PKG_VIEW_LEDGER;
/

首先,根据错误,您正在SYSTEM模式中创建包。不要那样做。SYSSYSTEM是特殊的,只能由Oracle用于Oracle交付的对象。您将需要一个新的模式来创建自己的对象。SYSSYSTEM是特殊的,它们的行为方式并不总是与正常模式相同,因此如果使用这些模式,各种功能将无法正常工作。

其次,在定义包规范时,ENDCREATE不匹配。您正在创建PKG_VIEW_LEDGER,同时正在结束PRG_VIEW_LEDGERPKG!=CCD_ 11。如果您在创建包规范后有一个show errors,则错误会告诉您这一点。

我已经修改了代码,它运行良好。请站在你这边试试,然后告诉我。谢谢

CREATE OR REPLACE  PACKAGE PKG_VIEW_LEDGER AS
        TYPE cur_view_data is REF CURSOR;
        PROCEDURE sp_view_ledger(person IN VARCHAR2, cur_inout IN OUT cur_view_data);
        END PkG_VIEW_LEDGER;
--------------------------------------------------------------
Package  created.
--------------------------------------------------------------
        CREATE OR REPLACE  PACKAGE PKG_VIEW_LEDGER AS
                TYPE cur_view_data is REF CURSOR;
                PROCEDURE sp_view_ledger(person IN VARCHAR2, cur_inout IN OUT cur_view_data);
        END PRG_VIEW_LEDGER;
        /
        CREATE OR REPLACE PACKAGE BODY PKG_VIEW_LEDGER AS
        PROCEDURE sp_view_ledger( person IN VARCHAR2, cur_inout IN OUT cur_view_data)
        IS
            tmp_cursor cur_view_data;
        BEGIN
            OPEN tmp_cursor FOR
                select * from avrajit;
            cur_inout := tmp_cursor;
        END sp_view_ledger;
        END PKG_VIEW_LEDGER;
    /
    -----------------------------------------------------
    Package Body created.
    0.04 seconds

最新更新