编译Oracle包主体时出错

时间:2013-11-09 01:03:21

标签: database oracle package

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

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

我认为此示例可以帮助您:

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;