質問編集履歴

2

全体的にすべてを書き直し みなさんのアドバイスを受けて。

2018/01/18 08:51

投稿

s_ayana
s_ayana

スコア35

test CHANGED
@@ -1 +1 @@
1
- クエリエラが発生てしまう。
1
+ 複数のテールのレコドを代入たい
test CHANGED
@@ -2,104 +2,64 @@
2
2
 
3
3
  ソース
4
4
 
5
- DELIMITER $$
5
+ 複数のレコードを読み込んで実行したい
6
-
7
-
8
-
9
- DROP PROCEDURE IF EXISTS testproc1$$
10
-
11
-
12
6
 
13
7
  CREATE PROCEDURE testproc1()
14
8
 
15
9
  BEGIN
16
10
 
17
- DECLARE done INT;
11
+ DECLARE done INT DEFAULT 0;
18
12
 
13
+ DECLARE a INT;
14
+
15
+ DECLARE cur1 cursor FOR SELECT column1 FROM table1;
16
+
17
+
18
+
19
- DECLARE CONTINUE HANDLER FOR SQLSTATE '20000' SET done = 1;
19
+ DECLARE continue handler FOR sqlstate '02000' SET done = 1;
20
+
21
+
22
+
23
+ OPEN cur1;
20
24
 
21
25
 
22
26
 
23
- SET @num=(SELECT table1.colum1 FROM table1);
27
+ WHILE done DO
24
28
 
29
+ FETCH cur1 INTO a;
30
+
31
+ IF done THEN
32
+
25
- SET @path=(select nm3 from system where Key2 = 1);
33
+ update table1 set colum1=3 where colum1=2;
34
+
35
+ END IF;
36
+
37
+ END WHILE;
26
38
 
27
39
 
28
40
 
29
- IF @num=2 THEN
30
-
31
-
32
-
33
- SET @query = CONCAT('SELECT * FROM table1 INTO OUTFILE ',"'", @path ,"'",' FIELDS TERMINATED BY ","');
34
-
35
- PREPARE getExtends FROM @query;
36
-
37
- EXECUTE getExtends;
38
-
39
- DEALLOCATE PREPARE getExtends;
40
-
41
-
42
-
43
- SET SQL_SAFE_UPDATES = 0;
44
-
45
- update table1 set table1.colum1=3 where table1.colum1=2;
46
-
47
-
48
-
49
- END IF;
41
+ CLOSE cur1;
50
-
51
-
52
-
53
- select * from t213_cont_doc_info;
54
-
55
-
56
42
 
57
43
  END$$
58
44
 
59
45
 
60
46
 
61
- DELIMITER ;
47
+ delimiter ;
62
48
 
63
49
 
64
50
 
65
- やっているこはtable1.colum1の中には1,2,3などの数字が入っていてもしテーブルのカラムの数字が2ならCSV出力して2を3変えるという処理です。
51
+ 書きまた。テーブルのカラムに
66
52
 
67
- table1
53
+ | colum |
68
54
 
69
- |colum1|
55
+ | 1 |
70
56
 
71
- | 1 |
57
+ | 2 |
72
58
 
73
- | 2 |
59
+ | 2 |
74
60
 
75
- | 3 |
61
+ | 3 |
76
62
 
77
- っていて、上から2に引っかかったらcsv出力して、2をに変える処理です
63
+ って上からカラムを読み込んで、2を3に変換したいのですが、うまくいきません。
78
64
 
79
- 実行後
80
-
81
- csv出力
82
-
83
- table1
84
-
85
- |colum1|
86
-
87
- | 1 |
88
-
89
- | 3 |
90
-
91
- | 3 |
92
-
93
- みたいな感じの処理です。
94
-
95
- ソースの9行目あたりの
96
-
97
- SET @num=(SELECT table1.colum1 FROM table1);のとこで Error Code: 1242. Subquery returns more than 1 row
98
-
99
- と出てしまいます。
100
-
101
- なので SET @num=(SELECT * FROM table1 WHERE table1.colum1=2);とやると、今度はError Code: 1241. Operand should contain 1 column(s)と出てしまいます。
102
-
103
- このエラーを直すにはどうすればよろしいでしょうか?
104
-
105
- ご回答宜しくお願いします。
65
+ やりかた分かる方お願いいたします。

1

説明の追加。。。。。。。。。。。。。。。。

2018/01/18 08:51

投稿

s_ayana
s_ayana

スコア35

test CHANGED
File without changes
test CHANGED
@@ -62,7 +62,37 @@
62
62
 
63
63
 
64
64
 
65
- やっていることはtable1.colum1の中には1,2,3などの数字が入っていてもしテーブルのカラムの数字が2ならCSV出力して2を3に変えるというだけなのですが、ソースの9行目あたりの
65
+ やっていることはtable1.colum1の中には1,2,3などの数字が入っていてもしテーブルのカラムの数字が2ならCSV出力して2を3に変えるという処理です
66
+
67
+ table1
68
+
69
+ |colum1|
70
+
71
+ | 1 |
72
+
73
+ | 2 |
74
+
75
+ | 3 |
76
+
77
+ と入っていて、上から2に引っかかったらcsv出力して、2を3に変える処理です
78
+
79
+ 実行後
80
+
81
+ csv出力
82
+
83
+ table1
84
+
85
+ |colum1|
86
+
87
+ | 1 |
88
+
89
+ | 3 |
90
+
91
+ | 3 |
92
+
93
+ みたいな感じの処理です。
94
+
95
+ ソースの9行目あたりの
66
96
 
67
97
  SET @num=(SELECT table1.colum1 FROM table1);のとこで Error Code: 1242. Subquery returns more than 1 row
68
98