2016-05-30 9 views
1

PL/SQLを使用しています。私はwith節に一時テーブルを定義した直後にforループを作成しようとしています。しかし、最初にSELECTクエリを持つためにエラーが発生しました。PL/SQLでWith句の後のforループを使用します。

例えば

WITH TMP1 AS (.....), TMP2 AS (......), TMP3 AS (......) 

FOR R IN (SELECT DISTINCT ..... FROM TMP1 WHERE .....) 
LOOP 
SELECT .... FROM TMP2, TMP2 WHERE TMP2.... = R..... .... 

どのように私はそうやって行くのですか?

ありがとうございます。

+0

を - それらは2つの別々の言語ですが、それぞれを別の言語に埋め込むことができます。 –

答えて

4

文全体からCTEにアクセスすることはできません。また、CTEの最終SELECTの外にあるCTEの個々の部分にアクセスすることはできません。

あなたは(最終SELECTステートメントを含む)全体 CTE にカーソルループに置く必要があります:あなたは、SQLおよびPL/SQLとの違いを熟知したいと思う

FOR R IN (WITH TMP1 AS (.....), 
       TMP2 AS (......), 
       TMP3 AS (......) 
      SELECT DISTINCT ..... 
      FROM TMP1 
      JOIN temp2 ON ... 
      JOIN temp3 ON ... 
      WHERE .....) 
LOOP 
    -- here goes the code that processes each row of the query 
END LOOP; 
+0

まあまあです。ありがとう –

関連する問題