【问题标题】:Error when Compiling Oracle Package Body编译 Oracle 包体时出错
【发布时间】:2013-11-10 06:20:15
【问题描述】:

包规范成功编译并显示消息“SPBomPackage Compiled”但是在编译包主体时我有两个错误,它们如下所示,“错误(17,6):PL/SQL:语句被忽略”和“错误(17 ,17):PLS-00302:必须声明组件“ITEM_ID””, 包规范、包主体和我使用的三个表,这个包将使用的都被粘贴和格式化,你可以在这个链接上查看:

【问题讨论】:

    标签: database oracle package


    【解决方案1】:

    欢迎来到 SO。为了将来参考,请在问题中发布代码。我们是一群懒惰的人。我不知道为什么,但我认为两个表中重复的 ITEM_ID 列最终出现在连接中存在一些问题,那么 %ROWTYPE 似乎会感到困惑。当我更改游标显式声明要返回的每一列时,如下所示,它编译正确。

      CURSOR c1
      IS
         SELECT bi.item_id, bi.item_desc, bi.item_category, bi.item_image,
                ia.parent_item_id, ia.assembly_qty
           FROM bicycle_item bi JOIN item_assembly ia ON bi.item_id =
                                                                   ia.item_id
          WHERE ia.parent_item_id = item_param_id;
    

    【讨论】:

    • 感谢这解决了我的问题!
    【解决方案2】:

    我认为这个示例可以帮助您:

    create or replace
    PACKAGE       PKG_YourPackage AS
      TYPE T_CURSOR IS REF CURSOR;
    PROCEDURE sp_Test(InputTest in number,   T_List OUT T_CURSOR);
    END;
    /
    create or replace
    PACKAGE BODY       PKG_PKG_YourPackage as
    PROCEDURE sp_Test(InputTest in number,   T_List OUT T_CURSOR)
    
      IS
    
        BEGIN
            OPEN T_List FOR
    select
    t1.*,t2.*
    from
    Table1 t1,
    Table2 t2
    where
    t1.id = t2.Table1ID and
    t1.id = InputTes ;
    End sp_Test;
    END;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-25
      • 1970-01-01
      相关资源
      最近更新 更多