【问题标题】:My Mysql procedure encounter syntax errorMysql 程序遇到语法错误
【发布时间】:2019-07-15 10:38:43
【问题描述】:
DROP PROCEDURE IF EXISTS oneTimeExcution;

CREATE PROCEDURE `oneTimeExcution`()

begin


   DECLARE done INT DEFAULT FALSE;


   DECLARE totalCount int(10) default 0;

   DECLARE i INT DEFAULT 0;


   DECLARE nowUnixTime int(10) unsigned default 0;

   DECLARE id varchar(100) default null;

   DECLARE cur CURSOR FOR SELECT deviceId FROM tb_sensor;



   DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;


   select (UNIX_TIMESTAMP()-31622400) into nowUnixTime;

   select count(*) from tb_sensor into totalCount;


   OPEN cur;

             FETCH NEXT FROM cur INTO id;

   close cur;

   read_loop: loop

   IF done then

   LEAVE read_loop;

   END IF;

   END LOOP;

end;

我目前在end ifend loops 中遇到语法错误。我不知道为什么。请..请让我知道问题是什么。
我当前的 MySQL 版本是 5.6。

【问题讨论】:

标签: mysql syntax procedure


【解决方案1】:

试试下面的代码

CREATE PROCEDURE `oneTimeExcution`()

begin


   DECLARE done INT DEFAULT FALSE;


   DECLARE totalCount int(10) default 0;

   DECLARE i INT DEFAULT 0;


   DECLARE nowUnixTime int(10) unsigned default 0;

   DECLARE id varchar(100) default null;

   DECLARE cur CURSOR FOR SELECT deviceId FROM tb_sensor;



   DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;


   select (UNIX_TIMESTAMP()-31622400) into nowUnixTime;

   select count(*) from tb_sensor into totalCount;


   OPEN cur;

   read_loop: loop
             FETCH NEXT FROM cur INTO id;

   IF done then

   LEAVE read_loop;

   END IF;

select 'success'; # condition comes here

   END LOOP;
   close cur;
end;

【讨论】:

    猜你喜欢
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多