对不起,问题的名字,我会给你一个更具体的例子。存储LOOP每次迭代的数据并将它们全部返回到ref cursor?
var1 VARCHAR(20);
var2 VARCHAR(20);
--MYRECORD CONTAINS COLUMNS ELEMENT0, VAL
FOR MYRECORD IN EXPLICITCURSOR LOOP
SELECT COL1, COL2 INTO var1, var2 FROM table1 WHERE table1.COLUMNT=MYRECORD.VAL;
END LOOP;
正如你可以看到我有一个循环和里面我有一个选择。现在,为了进行测试,我将结果保存到每次都覆盖的两个变量中。 我需要保存在每次迭代(ELEMENT0,COL1,COL2),我会给他们的输出与REF CURSOR。
编辑1:我正在寻找在这个时刻定义一个记录和我的记录类型的表的可能性。任何人都可以为我举个例子吗?我在设置表格作为输出参数时遇到问题。 这是我在包装的开始准备的。
TYPE my_record is RECORD(
ELEMENT0 varchar2(20),
COL1 varchar2(20),
COL2 varchar2(20));
TYPE my_table IS TABLE OF my_record;
和现在我使用的是OUT参数为我的过程是这样的:
TABLERESULT OUT my_table
我想插入我的三个VARCHAR值我OUT PARAM内部在每次循环这种方式(值正确设置好的):
INSERT INTO TABLERESULT(ELEMENT0,COL1,COL2) VALUES(ELEMENT0,COL1,COL2);
,它给我的错误:
PL/SQL: ORA-00942: table or view does not exist
我做错了使用这种类型的OUT参数?
有什么建议吗?谢谢。 (我正在使用Oracle 11g)
编辑2:在@APC的帮助下,我发现命名错误,现在编译器不会给出问题。我会继续,我会让你知道的。
保存在哪里?一张桌子?一份文件? –
“保存”我的意思是说,我需要一种方式来存储这些三个varchar2值的东西像一个数组,然后返回所有的参考光标的过程调用者。你能建议一种方法来做到这一点? –
将它们插入临时表中? –