如何从嵌套的Oracle过程检索值?
|
我有一个棘手的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;
任何帮助表示赞赏,谢谢。
没有找到相关结果
已邀请:
2 个回复
诞胃
结果集合并为一个大集合。如果您知道从
返回的游标的结构,则可以使用中间管道函数来实现。
可以在此处定义类型,它们不必处于SQL级别,因为您无需在包外引用它们。
然后执行(尽管中间阶段使用的是哪种类型,也可以在包外部执行),可以在SQL * Plus或SQL Developer中进行测试:
对于我的数据库,它给出:
这显然是非常人为的,因为您可以将其作为单个查询来执行,但是我假设您的内部过程需要做一些更复杂的事情。
怪酞撩匹
(顺便说一下,我自己将类型的名称从
更改为
。)