Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle PL/SQL使用WITH子句选择变量_Oracle_Variables_Plsql_Select Into_With Clause - Fatal编程技术网

Oracle PL/SQL使用WITH子句选择变量

Oracle PL/SQL使用WITH子句选择变量,oracle,variables,plsql,select-into,with-clause,Oracle,Variables,Plsql,Select Into,With Clause,我有一个WITH子句,它给出了我想要的结果,我试图把它放在一个变量中。为了简单起见,我省略了代码。最后一行代码是最相关的 WITH ALL_VE_ERRORS AS ( SELECT * FROM ASN.AN_VALIDATION_ERRORS WHERE ... ), FILTER_STATUS AS ( SELECT * FROM ALL_VE_ERRORS WHERE ...

我有一个WITH子句,它给出了我想要的结果,我试图把它放在一个变量中。为了简单起见,我省略了代码。最后一行代码是最相关的

WITH ALL_VE_ERRORS AS (

        SELECT *
        FROM ASN.AN_VALIDATION_ERRORS
        WHERE ...

    ), FILTER_STATUS AS (

        SELECT *
        FROM ALL_VE_ERRORS
        WHERE ...

      ) SELECT UNIT_DISCREPANCY FROM FILTER_STATUS INTO W_UNIT_DISCREPANCY; <-- like this
但这不起作用,编译器不喜欢这样。我也试着这样把它放在第一位:

SELECT INTO W_UNIT_DISCREPANCY <-- or like this
       WITH ALL_VE_ERRORS AS (...

有人知道这样做的正确语法吗?

如果您没有我看不到的原因,那么在WITH子句中不需要两个表;您可以这样简化它:

WITH ALL_VE_ERRORS AS (    
    SELECT *
    FROM ASN.AN_VALIDATION_ERRORS
    WHERE ...    
)
SELECT UNIT_DISCREPANCY
INTO W_UNIT_DISCREPANCY
FROM ALL_VE_ERRORS
WHERE ...
否则,您可以使用:

WITH ALL_VE_ERRORS AS (    
        SELECT *
        FROM ASN.AN_VALIDATION_ERRORS
        WHERE ...    
    ), FILTER_STATUS AS (    
        SELECT *
        FROM ALL_VE_ERRORS
        WHERE ...    
      )
SELECT UNIT_DISCREPANCY
INTO W_UNIT_DISCREPANCY
FROM FILTER_STATUS 

如果您没有我看不到的原因,那么在WITH子句中不需要两个表;您可以这样简化它:

WITH ALL_VE_ERRORS AS (    
    SELECT *
    FROM ASN.AN_VALIDATION_ERRORS
    WHERE ...    
)
SELECT UNIT_DISCREPANCY
INTO W_UNIT_DISCREPANCY
FROM ALL_VE_ERRORS
WHERE ...
否则,您可以使用:

WITH ALL_VE_ERRORS AS (    
        SELECT *
        FROM ASN.AN_VALIDATION_ERRORS
        WHERE ...    
    ), FILTER_STATUS AS (    
        SELECT *
        FROM ALL_VE_ERRORS
        WHERE ...    
      )
SELECT UNIT_DISCREPANCY
INTO W_UNIT_DISCREPANCY
FROM FILTER_STATUS 

我可以,我知道我可以这样做。我在这篇文章中省略了大约100行代码,虽然这篇文章稍微简单了一点,但我们有一些8级的选择,可能是600行,这在嵌套时会变得非常复杂,所以我更愿意找到一种方法来处理这些代码,这样我就不必重写它,而且为了可读性,但也供进一步参考,因为我们在我的环境中使用了这些巨大的with子句。但是通常我们会把它们选进游标…所以也许我可以把它选进游标,然后把游标选进变量…啊,我很笨,我把into放在FROM后面…:我可以,我知道我可以这样做。我在这篇文章中省略了大约100行代码,虽然这篇文章稍微简单了一点,但我们有一些8级的选择,可能是600行,这在嵌套时会变得非常复杂,所以我更愿意找到一种方法来处理这些代码,这样我就不必重写它,而且为了可读性,但也供进一步参考,因为我们在我的环境中使用了这些巨大的with子句。但是通常我们会把它们选进游标…所以也许我可以把它选进游标,然后把游标选进变量…啊,我很笨,我把into放在FROM后面…: