在pl/sql中使用子查询块

在pl/sql中使用子查询块,sql,oracle,plsql,subquery,Sql,Oracle,Plsql,Subquery,我有一个大型SQL脚本,它由与此类似的子查询块组成 WITH get_some_data AS ( SELECT * FROM table1 inner join table1.row2 r2 on table2.row2 ) 然后在“main”查询中调用此块 SELECT Row3 FROM get_some_data; 问题是我想将这段代码转换为pl/sql,这样我就可以捕获主查询,但这会导致子查询失败,因为它需要一个“SELECT-INTO”而不是一个SELECT 我并没有错过一些

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

WITH get_some_data AS (
SELECT * 
FROM table1
inner join table1.row2 r2 on table2.row2 
)
然后在“main”查询中调用此块

SELECT Row3
FROM get_some_data;
问题是我想将这段代码转换为pl/sql,这样我就可以捕获主查询,但这会导致子查询失败,因为它需要一个“SELECT-INTO”而不是一个SELECT

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

我不确定您要的是什么,但如果您想将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; 

我不确定您要求的是什么,但如果您想将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; 

请正确指定您的问题?请正确指定您的问题?是的,我正在寻找PLSQL的CTE(谢谢,不知道“真实”术语)。我想这将有助于解决我的问题,我会试一试。非常感谢!刚刚完成测试,效果很好。再次感谢!是的,我一直在寻找PLSQL的CTE(谢谢,我不知道真正的术语)。我想这将有助于解决我的问题,我会试一试。非常感谢!刚刚完成测试,效果很好。再次感谢!