2016-05-03 14 views
0

WITH句を使用して希望の結果を得ました。変数に格納しようとしています。私は単純化のためにコードを省略しました。コードの最後の行が最も適切です。Oracle PL/SQL 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 (... 

誰かがこのようなことを行う正しい構文を知っていますか?

答えて

2

私が見ることができない理由がない場合は、WITH句に2つのテーブルは必要ありません。私は

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 
+0

ことができ、そして私はそれをこの方法で行うことができます知っている:あなたが使用することができ、そうでない場合

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

:あなたはこのようにそれを簡素化することができます。私はこのコードで100行のコードを省略しましたが、これは少しシンプルですが、私たちは8レベルの選択肢を600行にすることができます。入れ子にすると本当に毛むくじゃらしてしまいます。私はこれらの巨大な節が私の環境全体に使用されているので、これを行う方法です。私はこれを書き直す必要はなく、読みやすくするために、さらに参考にしてください。しかし、通常はカーソルにそれらを選択していたので...多分私はカーソルにそれを選択し、次に変数にカーソルを選択することができます.... – SomeRandomDeveloper

+0

ああ、私の愚か者、私は後にINTOを置く... :) – SomeRandomDeveloper

関連する問題