2017-10-31 2 views
0

私はストアドプロシージャを初めて使用しています。私の要件は以下の通りです。 T_KEYの値が異なる過去4か月間のテーブル(以下の例)のデータを格納するストアドプロシージャを用意する必要があります。 A_KEY、M_KEY、およびG_KEY。以下はストアドプロシージャを使用してmutilpe値を挿入する

mysql> select * from R_A_METRICS; 
+---------------------+------------+-----------------+-------+------------+ 
| TIMESTAMP   | T_KEY  | A_KEY   | M_KEY | G_KEY   

| 2017-06-30 00:00:00 | a  | b    | c  | d       
| 2017-06-30 00:15:00 | a1  | b1    | c1 | d1 

私は@ T_KEY = A、A1、A2のような値を設定するとするラウンドロビン方法でそれを挿入したい

PROCEDURE `POPULATE_A_METRICS`() 
BEGIN 
DECLARE START_DAY TIMESTAMP; 
DECLARE END_DAY TIMESTAMP; 
SET START_DAY = CURDATE() - INTERVAL 4 MONTH; 
SET END_DAY = CURDATE(); 
WHILE (START_DAY <= END_DAY) DO 
insert into R_A_METRICS values(START_DAY,T_KEY,A_KEY,M_KEY,G_KEY); 
SET START_DAY = START_DAY + INTERVAL 15 MINUTE; 
END WHILE; 
END 

、4ヶ月のデータを取り込むために、私のサンプル手順です表。 A_KEY、M_KEY、G_KEYなどの他の列の同様の要件

ストアドプロシージャを使用してこれを達成する方法についてのアイデアはありますか?クレートに

TIA

答えて

0

のような挿入された値のシーケンス、A1、A2、あなたは一時的な値を持っているし、保存する現在のシーケンスを格納する必要があります:

delimiter $$ 
DROP PROCEDURE IF EXISTS `POPULATE_A_METRICS`$$ 
CREATE PROCEDURE `POPULATE_A_METRICS`() 
BEGIN 
    DECLARE START_DAY TIMESTAMP; 
    DECLARE END_DAY TIMESTAMP; 

    SET START_DAY = CURDATE() - INTERVAL 4 MONTH; 
    SET END_DAY = CURDATE(); 

    set @counter = ''; /*a counter, blank at first*/ 
    set @T_KEY = 'a'; 
    set @A_KEY = 'b'; 
    set @M_KEY = 'c'; 
    set @G_KEY = 'd'; 

    WHILE (START_DAY <= END_DAY) DO 

     insert into R_A_METRICS (`TIMESTAMP`,T_KEY,A_KEY,M_KEY,G_KEY) 
     values (START_DAY,@T_KEY,@A_KEY,@M_KEY,@G_KEY); 

     SET START_DAY = START_DAY + INTERVAL 15 MINUTE; 

     set @counter = @counter + 1 ; /*increase counter and concatenate bellow: */ 
     set @T_KEY = concat('a',@counter); 
     set @A_KEY = concat('b',@counter); 
     set @M_KEY = concat('c',@counter); 
     set @G_KEY = concat('d',@counter); 

    END WHILE; 
END$$ 

実行した後にあなたが得ます:

mysql> SELECT `TIMESTAMP`,T_KEY,A_KEY,M_KEY,G_KEY FROM R_A_METRICS; 
+---------------------+-------+-------+-------+-------+ 
| TIMESTAMP   | T_KEY | A_KEY | M_KEY | G_KEY | 
+---------------------+-------+-------+-------+-------+ 
| 2017-11-02 20:00:00 | a  | b  | c  | d  | 
| 2017-11-02 20:15:00 | a1 | b1 | c1 | d1 | 
| 2017-11-02 20:30:00 | a2 | b2 | c2 | d2 | 
| 2017-11-02 20:45:00 | a3 | b3 | c3 | d3 | 
| 2017-11-02 21:00:00 | a4 | b4 | c4 | d4 | 
| 2017-11-02 21:15:00 | a5 | b5 | c5 | d5 | 
| 2017-11-02 21:30:00 | a6 | b6 | c6 | d6 | 
| 2017-11-02 21:45:00 | a7 | b7 | c7 | d7 | 
| 2017-11-02 22:00:00 | a8 | b8 | c8 | d8 | 
| 2017-11-02 22:15:00 | a9 | b9 | c9 | d9 | 
関連する問題