Oracle / SQL - Cursor为CONNECT BY操作提供的内存不足

时间:2015-06-12 05:27:42

标签: sql oracle

当我按如下方式创建游标cur时 -

CURSOR cur IS SELECT Rownum r FROM dual WHERE mod(rownum,2)=1 CONNECT BY rownum <15;

它给我一个错误ORA-30009: Not enough memory for CONNECT BY operation

我尝试将限制降低到3,但它没有用。

知道我使用此游标作为 -

运行循环可能会有所帮助
FOR cur_inst IN cur
    LOOP
        dbms_output.put_line(cur_inst.r);
    END LOOP;

循环运行一次并打印1。但是,在第一次迭代后抛出上述错误。

此外,如果我删除WHERE子句,查询将正确执行 -

QUERY OUTPUT

1 个答案:

答案 0 :(得分:2)

连接行后应用过滤逻辑!否则,它会搞乱连接。

CURSOR cur IS
select r  from
(SELECT Rownum r FROM dual CONNECT BY rownum <15
 )
 where mod(r,2)=1