回答編集履歴
1
追記
    
        answer	
    CHANGED
    
    | @@ -2,4 +2,37 @@ | |
| 2 2 | 
             
            質問の際は動作確認に必要なCREATE TABLE D なども提示された方が良いです。
         | 
| 3 3 | 
             
            質問の内容が中途半端なので適切なコメントはできませんが、何が何でもWITH句を使うのが目的でしょうか?
         | 
| 4 4 |  | 
| 5 | 
            -
            WITH句が使えなければインラインビューを使う方法もあるのでは?
         | 
| 5 | 
            +
            WITH句が使えなければインラインビューを使う方法もあるのでは?
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            単にPL/SQLの中でWITHの記述方法がわからないだけなら以下のコードを参考に。
         | 
| 8 | 
            +
            ```PL/SQL
         | 
| 9 | 
            +
            SQL> CREATE OR REPLACE FUNCTION FUNC1
         | 
| 10 | 
            +
              2      RETURN NUMBER
         | 
| 11 | 
            +
              3  IS
         | 
| 12 | 
            +
              4      CURSOR CUR_MON IS
         | 
| 13 | 
            +
              5          WITH MONTH_LIST AS
         | 
| 14 | 
            +
              6              (
         | 
| 15 | 
            +
              7              SELECT 5 AS MONTH FROM DUAL
         | 
| 16 | 
            +
              8              )
         | 
| 17 | 
            +
              9          SELECT ML.MONTH
         | 
| 18 | 
            +
             10          FROM MONTH_LIST ML
         | 
| 19 | 
            +
             11          ORDER BY ML.MONTH ;
         | 
| 20 | 
            +
             12      L_MONTH NUMBER(2) ;
         | 
| 21 | 
            +
             13  BEGIN
         | 
| 22 | 
            +
             14      OPEN CUR_MON ;
         | 
| 23 | 
            +
             15      FETCH CUR_MON INTO L_MONTH ;
         | 
| 24 | 
            +
             16      CLOSE CUR_MON ;
         | 
| 25 | 
            +
             17      RETURN(L_MONTH) ;
         | 
| 26 | 
            +
             18  END FUNC1 ;
         | 
| 27 | 
            +
             19  /
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            ファンクションが作成されました。
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            SQL> SELECT FUNC1 FROM DUAL ;
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                    FUNC1
         | 
| 34 | 
            +
            -------------
         | 
| 35 | 
            +
                        5
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            SQL>
         | 
| 38 | 
            +
            ```
         | 
