回答編集履歴
1
訂正
test
CHANGED
@@ -8,13 +8,17 @@
|
|
8
8
|
|
9
9
|
(
|
10
10
|
|
11
|
-
|
11
|
+
COL_1 VARCHAR2(3) NOT NULL
|
12
|
+
|
13
|
+
, COL_2 VARCHAR2(8) NOT NULL
|
14
|
+
|
15
|
+
, COL_3 VARCHAR2(3) NOT NULL
|
12
16
|
|
13
17
|
) ;
|
14
18
|
|
15
|
-
INSERT INTO TBL(
|
19
|
+
INSERT INTO TBL(COL_1, COL_2, COL_3) VALUES('111', 'AAAABBBB', '222') ;
|
16
20
|
|
17
|
-
INSERT INTO TBL(
|
21
|
+
INSERT INTO TBL(COL_1, COL_2, COL_3) VALUES('111', 'CCCC', '222') ;
|
18
22
|
|
19
23
|
COMMIT ;
|
20
24
|
|
@@ -24,7 +28,7 @@
|
|
24
28
|
|
25
29
|
2行に分けるか1行のままで良いかの条件をもっと明示できた方が良いです。
|
26
30
|
|
27
|
-
とりあえず文字列の長さが 16バイトを条件とします。
|
31
|
+
~~とりあえず文字列の長さが 16バイトを条件とします。~~
|
28
32
|
|
29
33
|
結果もテキストファイルに出力しました。
|
30
34
|
|
@@ -52,7 +56,11 @@
|
|
52
56
|
|
53
57
|
IS
|
54
58
|
|
55
|
-
SELECT T.
|
59
|
+
SELECT T.COL_1
|
60
|
+
|
61
|
+
, T.COL_2
|
62
|
+
|
63
|
+
, T.COL_3
|
56
64
|
|
57
65
|
FROM TBL T ;
|
58
66
|
|
@@ -60,15 +68,15 @@
|
|
60
68
|
|
61
69
|
FOR REC_T IN CUR_T LOOP
|
62
70
|
|
63
|
-
IF LENGTH(REC_T.
|
71
|
+
IF LENGTH(REC_T.COL_2) = 8 THEN -- COL_2が8バイトなら2行で出力
|
64
72
|
|
65
|
-
DBMS_OUTPUT.PUT_LINE(
|
73
|
+
DBMS_OUTPUT.PUT_LINE(REC_T.COL_1 || ',' || SUBSTR(REC_T.COL_2, 1, 4) || ',' || REC_T.COL_3) ;
|
66
74
|
|
67
|
-
DBMS_OUTPUT.PUT_LINE(
|
75
|
+
DBMS_OUTPUT.PUT_LINE(REC_T.COL_1 || ',' || SUBSTR(REC_T.COL_2, 5, 4) || ',' || REC_T.COL_3) ;
|
68
76
|
|
69
77
|
ELSE
|
70
78
|
|
71
|
-
DBMS_OUTPUT.PUT_LINE(REC_T.
|
79
|
+
DBMS_OUTPUT.PUT_LINE(REC_T.COL_1 || ',' || REC_T.COL_2 || ',' || REC_T.COL_3) ;
|
72
80
|
|
73
81
|
END IF ;
|
74
82
|
|