質問編集履歴

1

実装した内容を追加しました。

2020/06/11 07:17

投稿

iiiiiiiikkkk
iiiiiiiikkkk

スコア6

test CHANGED
File without changes
test CHANGED
@@ -19,6 +19,82 @@
19
19
  ちなみに自分は以下のようなコードを上記の回答を見ながらwhile文で作成したいと考えています。
20
20
 
21
21
  今回は上記の質問への回答のMySQL版がわかればそれを見ながら自分で作業しようと考えています。そのため、自分のコードは一部抜粋で表示しています。
22
+
23
+
24
+
25
+ ###実装してみた結果
26
+
27
+ 回答いただいた内容をもとに実装しましたが、while文の中のselect文が実行されませんでした。
28
+
29
+ 1つのtemporary tableにデータを収めたい場合はどうすれば良いでしょうか?
30
+
31
+ ```MySQL
32
+
33
+ DROP TEMPORARY TABLE IF EXISTS tempo_table2;
34
+
35
+ DROP PROCEDURE IF EXISTS previous;
36
+
37
+ DELIMITER //
38
+
39
+ create procedure previous(in p_Limit int)
40
+
41
+ Begin
42
+
43
+ SET @sql1 := CONCAT("create temporary table tempo_table2",
44
+
45
+ ' select',
46
+
47
+ ' text_date',
48
+
49
+ ' ,cd_fromName',
50
+
51
+ ' ,cd_text',
52
+
53
+ ' ,command_content',
54
+
55
+ ' ,cd_text_action',
56
+
57
+ ' from tempo_table;');
58
+
59
+ prepare sql1 FROM @sql1;
60
+
61
+ Execute sql1;
62
+
63
+ Deallocate prepare sql1;
64
+
65
+ SET @CNT = 1;
66
+
67
+ while p_limit >= @CNT Do
68
+
69
+ Set @sql2 := CONCAT("select",
70
+
71
+ ' ,lag(cd_text_action,',@CNT,') over(order by cd_fromName,text_date) as previous_action',@CNT,
72
+
73
+ ' ,lag(cd_fromName,',@CNT,') over(order by cd_fromName,text_date) as previous_Name',@CNT,
74
+
75
+ ' from tempo_table;');
76
+
77
+ SET @CNT = @CNT + 1;
78
+
79
+ prepare sql2 FROM @sql2;
80
+
81
+ Execute sql2;
82
+
83
+ Deallocate prepare sql2;
84
+
85
+ End while;
86
+
87
+ End;
88
+
89
+ //
90
+
91
+ DELIMITER ;
92
+
93
+ call previous(20);
94
+
95
+ select * from tempo_table2;
96
+
97
+ ```
22
98
 
23
99
 
24
100
 
@@ -74,8 +150,6 @@
74
150
 
75
151
  ```
76
152
 
77
-
78
-
79
153
  ### 補足情報(FW/ツールのバージョンなど)
80
154
 
81
155