【发布时间】:2011-08-28 04:48:23
【问题描述】:
我遇到了一个棘手的 Oracle 问题。我正在尝试选择一组数据,我们将调用项目。对于每个项目,我想调用另一个过程并返回一个库存项目。我有两个操作我不确定如何执行。
如何从嵌套过程中检索值?
如何以 SYS_REFCURSOR 的形式返回这些检索到的值?
我在这里的尝试是将 spSelect_Inv_Search 的结果放入名为 ITEMS_TABLE 的嵌套表中。这不起作用。
代码如下
PROCEDURE SPSELECT_ITEM (IO_CURSOR OUT SYS_REFCURSOR)
AS
MY_CURSOR SYS_REFCURSOR;
TYPE ITEM_TYPE IS TABLE OF ITEMS.ITEM_NO%TYPE;
ITEM_TABLE ITEM_TYPE := ITEM_TYPE();
CURSOR ITEMS_CURSOR IS
SELECT ITEM_NO
FROM ITEMS;
V_COUNTER INTEGER := 0;
BEGIN
FOR ITEM_REC IN ITEM_CURSOR LOOP
V_COUNTER := V_COUNTER + 1;
ITEM_TABLE.EXTEND;
ITEM_TABLE(V_COUNTER) := spSelect_Inv_Search(ITEM_REC.ITEM_NO, MY_CURSOR);
END LOOP;
END SPSELECT_ITEMS;
感谢您的帮助。
【问题讨论】:
-
您能准确解释一下什么不起作用吗?你有错误吗?该程序是在做您不期望的事情还是没有做您期望的事情?
spSelect_Inv_Search返回什么?当程序完成时,您希望IO_CURSOR引用什么? -
spselect_Inv_Search 返回一个 SYS_REFCURSOR。我不知道如何从 spSelect_Inv_Search 中检索任何内容。这是我的第一个问题。 IO_CURSOR 应该引用从调用 spSelect_Inv_Search 的循环创建的嵌套表。这是我的第二个问题。
标签: oracle plsql nested procedures