Sql 循环后重复使用CTE

Sql 循环后重复使用CTE,sql,oracle,stored-procedures,common-table-expression,Sql,Oracle,Stored Procedures,Common Table Expression,在我编写的过程中,我执行了几个步骤。在前一版本的过程中,多个步骤将数据插入到被误用为临时数据的表中。但是,我插入的数据大于表的最大列大小(NVARCHAR2(2000))。这就是为什么我要重写程序,使用CTE而不是归档表格。我重写了用于匹配此问题中所示模板的forloop。但是,程序的下一步应使用相同的CTE数据。如何访问此文件?如何将代码中“Step8”之后的零件与上述零件合并 我的代码的动画部分: FOR rec IN (. WITH ELEMENT_CTE (Row1, Row2, Row

在我编写的过程中,我执行了几个步骤。在前一版本的过程中,多个步骤将数据插入到被误用为临时数据的表中。但是,我插入的数据大于表的最大列大小(NVARCHAR2(2000))。这就是为什么我要重写程序,使用CTE而不是归档表格。我重写了用于匹配此问题中所示模板的forloop。但是,程序的下一步应使用相同的CTE数据。如何访问此文件?如何将代码中“Step8”之后的零件与上述零件合并

我的代码的动画部分:

FOR rec IN (.
WITH ELEMENT_CTE (Row1, Row2, Row3)
AS
(
...
)
,

EXPRESSIONS_CTE(Row1, Row2, Row3, Row4) 
AS
(
...
)

SELECT Row1,Row2, Row3, Row4 FROM EXPRESSIONS_CTE ) 

LOOP
    IF rec.Row1 = '3' THEN
    EXECUTE IMMEDIATE 'INSERT INTO SCHEMA.CMW_TABLENAMEONE...;
    COMMIT;
    ELSIF rec.Row1 = '5' THEN
    EXECUTE IMMEDIATE 'INSERT INTO SCHEMA.CMW_TABLENAMETWO...;
    COMMIT;
    END IF;
  END LOOP;

-- Step 8 
INSERT INTO SCHEMA.CMW_TABLENAMEONE (T1Row1, T1Row2, T1Row3)
SELECT DISTINCT Row1
     , Row2
     , NULL Row3
FROM EXPRESSIONS_CTE
WHERE Row1 = 3
MINUS
SELECT DISTINCT T1Row1
     , T1Row2
     , NULL T1Row3
FROM SCHEMA.CMW_TABLENAMEONE
;

如果您经常使用相同的CTE,为什么不创建一个视图,并在任何地方使用它呢?这也可以解决您当前的问题。

如果您经常使用同一个CTE,为什么不创建一个视图,并在任何地方使用它呢?这也将解决您当前的问题。

CTE的范围仅限于查询。CTE的范围仅限于查询。