【发布时间】:2013-11-10 06:20:15
【问题描述】:
包规范成功编译并显示消息“SPBomPackage Compiled”但是在编译包主体时我有两个错误,它们如下所示,“错误(17,6):PL/SQL:语句被忽略”和“错误(17 ,17):PLS-00302:必须声明组件“ITEM_ID””, 包规范、包主体和我使用的三个表,这个包将使用的都被粘贴和格式化,你可以在这个链接上查看:
【问题讨论】:
包规范成功编译并显示消息“SPBomPackage Compiled”但是在编译包主体时我有两个错误,它们如下所示,“错误(17,6):PL/SQL:语句被忽略”和“错误(17 ,17):PLS-00302:必须声明组件“ITEM_ID””, 包规范、包主体和我使用的三个表,这个包将使用的都被粘贴和格式化,你可以在这个链接上查看:
【问题讨论】:
欢迎来到 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;
【讨论】:
我认为这个示例可以帮助您:
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;
【讨论】: