2017-10-31 1 views
0

저장 프로 시저를 처음 사용하고 있습니다. 내 요구 사항은 입니다. 지난 4 개월 동안 내 테이블 (예 : 아래)에 대한 데이터를 채우는 저장 프로 시저가 T_KEY, 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 

내가, A1, A2 @ T_KEY = 같은 값을 설정하고에 라운드 로빈 방식으로 삽입 할 사개월 데이터를 채울 내 샘플 절차,

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 

입니다 표. 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 | 
관련 문제