teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2017/05/19 00:31

投稿

Orlofsky
Orlofsky

スコア16419

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