在pl / sql中使用子查询块

时间:2014-06-19 11:32:30

标签: sql oracle plsql subquery

我有一个大型SQL脚本,它由与此类似的子查询块组成。

WITH get_some_data AS (
SELECT * 
FROM table1
inner join table1.row2 r2 on table2.row2 
)

然后在主要的'中调用该块。查询。

SELECT Row3
FROM get_some_data;

问题是我想将此代码转换为pl / sql,这样我就可以捕获该主查询,但这会导致子查询失败,因为它期望一个' SELECT INTO'而不只是一个选择。

我没有错过一些简单的步骤来强制查询在没有' INTO'条款对吗? 有什么方法可以简化将子查询块转换为pl / sql,如果不是这样的话?如果没有它们,查询运行速度会非常慢。

1 个答案:

答案 0 :(得分:3)

我不确定你要求的是什么,但如果你想将CTE转换成PLSQL,下面就是一个例子

BEGIN 
    FOR i IN (WITH get_some_data 
                   AS (SELECT row3 
                       FROM   table1 
                              inner join table1.row2 r2 
                                      ON table2.row2) 
              SELECT row3 
               FROM   get_some_data) LOOP 
        dbms_output.Put_line(i.row3); 
    END LOOP; 
END;