Re- Forum,

Je veux créer une table temporaire mais elle bloque à l'insertion à cause d'un CASE. Si je supprime la partie CASE, tout fonctionne parfaitement.
Pouvez-vous me dire ce que je peux faire pour résoudre ce problème ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
INSERT INTO TMP_PERIOD 
 
	VALUES 
	(
	TO_NUMBER(TO_CHAR(ADD_MONTHS(TO_DATE(CURRENT_DATE), - 1),'yyyymm')),
	TO_NUMBER(TO_CHAR(TO_DATE(CURRENT_DATE),'yyyymm')),
	TO_NUMBER(TO_CHAR(ADD_MONTHS(TO_DATE(CURRENT_DATE),-12),'yyyy')),
	TO_NUMBER(TO_CHAR(TO_DATE(CURRENT_DATE),'yyyy')),
	TO_NUMBER(TO_CHAR(ADD_MONTHS(TO_DATE(CURRENT_DATE),-1),'mm')),
	TO_NUMBER(TO_CHAR(TO_DATE(CURRENT_DATE),'mm')),
	TO_NUMBER(TO_CHAR(ADD_MONTHS(TRUNC(CURRENT_DATE,'YYYY'),-12),'yyyymmdd')),
	TO_NUMBER(TO_CHAR(TRUNC(CURRENT_DATE,'YYYY'), 'yyyymmdd')),
	TO_NUMBER(TO_CHAR(LAST_DAY(ADD_MONTHS(TRUNC(CURRENT_DATE,'YYYY'),-1)), 'yyyymmdd')),
	TO_NUMBER(TO_CHAR(LAST_DAY(ADD_MONTHS(TRUNC(CURRENT_DATE,'YYYY'),+11)), 'yyyymmdd')),
	TO_NUMBER(TO_CHAR(TO_DATE(ADD_MONTHS(LAST_DAY(CURRENT_DATE),-2)+1),'yyyymmdd')),
	TO_NUMBER(TO_CHAR(TO_DATE(ADD_MONTHS(LAST_DAY(CURRENT_DATE),-1)+1),'yyyymmdd')),
	TO_NUMBER(TO_CHAR(TO_DATE(LAST_DAY(ADD_MONTHS(CURRENT_DATE, -1))),'yyyymmdd')),
	TO_NUMBER(TO_CHAR(TO_DATE(LAST_DAY(ADD_MONTHS(CURRENT_DATE, 0))),'yyyymmdd')),
	TO_NUMBER(to_char(trunc(CURRENT_DATE,'IW')-7,'yyyymmdd')),
	TO_NUMBER(to_char(trunc(CURRENT_DATE,'IW'),'yyyymmdd')),
	TO_NUMBER(to_char(trunc(CURRENT_DATE,'IW')-1,'yyyymmdd')),
	TO_NUMBER(to_char(trunc(CURRENT_DATE,'IW')+6,'yyyymmdd')),
	TO_NUMBER(TO_CHAR(ADD_MONTHS(TRUNC(CURRENT_DATE, 'Q'), -3), 'yyyymmdd')),
	TO_NUMBER(TO_CHAR(TRUNC(CURRENT_DATE , 'Q'), 'yyyymmdd')),
	TO_NUMBER(TO_CHAR(TRUNC(CURRENT_DATE , 'Q')-1, 'yyyymmdd')),
	TO_NUMBER(TO_CHAR(ADD_MONTHS(TRUNC(CURRENT_DATE, 'Q'), +3)-1, 'yyyymmdd')),
 
	(CASE 
		WHEN CEIL(TO_NUMBER(TO_CHAR(TO_DATE(CURRENT_DATE),'mm'))/6) = 1 THEN TO_NUMBER(TO_CHAR(ADD_MONTHS(TRUNC(CURRENT_DATE,'YYYY'),-6), 'yyyymmdd'))
		WHEN CEIL(TO_NUMBER(TO_CHAR(TO_DATE(CURRENT_DATE),'mm'))/6) = 2 THEN TO_NUMBER(TO_CHAR(TRUNC(CURRENT_DATE,'YYYY'), 'yyyymmdd'))
	END)
 
	)
;