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