mysql cursor

use pcdata;
DELIMITER $$

DROP PROCEDURE IF EXISTS `curdemo1` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `curdemo1`()
BEGIN
  DECLARE a int(11);
  DECLARE b varchar(45);
  declare  CreateStr varchar(2000);
  DECLARE done INT DEFAULT 0;
  DECLARE cur1 CURSOR FOR SELECT distinct curcekey FROM pcdata.curcevalue;
  DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
  OPEN cur1;
  REPEAT
   FETCH cur1 INTO a;
     IF NOT done THEN
       set b=CONCAT('curcevalue_',a);
       INSERT INTO pcdata.t2 VALUES (a,b);
       set CreateStr=concat('insert into ', b,' select * from curcevalue where curcekey=',a);
       set @sqlcounts = CreateStr;
       prepare stmt from @sqlcounts;
       execute stmt;
     end if;
  UNTIL done END REPEAT;
  CLOSE cur1;
END $$

DELIMITER ;

 

DELIMITER $$

DROP PROCEDURE IF EXISTS `AddRandData` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `AddRandData`()
BEGIN
  declare StartDate datetime;
DECLARE v1 INT DEFAULT 5;
declare temp1sk float;
declare temp1rf float;
declare speed1  float;
declare press1  float;
set StartDate=Date_Add(now(),Interval -30 day);
  WHILE v1 < 43200 DO
   set StartDate=Date_Add(StartDate,Interval 1 minute);
   select round(round(rand(),4)*100,1) into temp1sk;
   if temp1sk>50 or temp1sk<40 then
    set temp1sk=45;
   end if;
 insert into curcevalue(CurceKey,CurceValues,CurceDate,Ptype,OperatorName,roomid)
 values(1657,temp1sk,StartDate,'admin1',3);

 select round(round(rand(),4)*100,1) into temp1rf;
   if temp1rf>60 or temp1rf<40 then
    set temp1rf=50;
   end if;
 insert into curcevalue(CurceKey,CurceValues,CurceDate,Ptype,OperatorName,roomid)
 values(1663,temp1rf,StartDate,'admin1',7);

select round(round(rand(),4)*10000,0) into speed1;
   if speed1>3500 or speed1<2000 then
    set speed1=3000;
   end if;
 insert into curcevalue(CurceKey,CurceValues,CurceDate,Ptype,OperatorName,roomid)
 values(1669,speed1,StartDate,'admin1',1);
select round(round(rand(),4)*10,1) into press1;
   if press1>3.5 or press1<1 then
    set press1=2.0;
   end if;
 insert into curcevalue(CurceKey,CurceValues,CurceDate,Ptype,OperatorName,roomid)
 values(1643,press1,StartDate,'admin1',3);
   SET v1 = v1 + 1;

   END WHILE;
END $$

DELIMITER ;

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值