使用临时表的Oracle存储过程

时间:2015-05-29 16:11:54

标签: oracle plsql

我是oracle的新手,需要解决以下问题。

在存储过程中我想要返回2个这样的游标。

PROCEDURE MyProcA()
as
begin

open refcursorA FOR
   select id, ..... FROM tableA where ..... long series of conditions

open refcursorB FOR
    select * FROM table b where b.id IN (select id FROM tableA where .....       long series of conditions)

这就是我现在拥有存储过程的方式,但我不喜欢重复。第二个游标中括号中的where子句SQL与第一个游标完全相同。如何将其加载到临时表或关联数组中,或者在两个游标中使用。

提前致谢

1 个答案:

答案 0 :(得分:0)

您似乎需要REF Cursor

如何宣布?

cursor cursor_name is ref cursor;

如何使用?

open cursor_name for your select query
loop
fetch cursor_name into some_variable;
exit when cursor_name%notfound;
do_something;
end loop;
close cursor_name;

因此,相同的游标变量将动态指向不同的sql区域。

您可以看到Cursor Expression