繁体   English   中英

MySQL存储过程定界符

[英]MySQL Stored Procedure Delimiter

我尝试创建以下过程:

DROP PROCEDURE IF EXISTS my_super_procedure;
DELIMITER $$
CREATE PROCEDURE my_super_procedure(IN in_id VARCHAR(255), IN in_from_date timestamp, IN in_to_date timestamp)
BEGIN

    DROP TEMPORARY TABLE IF EXISTS tblResults;
    CREATE TEMPORARY TABLE IF NOT EXISTS tblResults(
        selected_date timestamp,
        total_value int
    ); -- !!!!!  Syntax error: missing END

    DECLARE tmp_date timestamp;
    SET tmp_date = in_from_date;

    WHILE tmp_date < in_to_date DO

        SELECT count(*) as total_events FROM event e where e.scheduled between tmp_date and tmp_date + interval 1 day;
        set tmp_date = DATE_ADD(tmp_date, INTERVAL 1 DAY);
    END WHILE;
END$$

DELIMITER ;

call my_super_procedure("3dccd75a-4c8e-11e7-bf68-5ce0c56861d1", "2017-06-24 04:16:43", "2017-06-28 04:16:43");

我是存储过程的新手。 如何解决此错误?

在代码开头而不是代码中间声明所有变量。

DROP PROCEDURE IF EXISTS my_super_procedure;
DELIMITER $$
CREATE PROCEDURE my_super_procedure(IN in_id VARCHAR(255), IN in_from_date timestamp, IN in_to_date timestamp)
BEGIN
    DECLARE tmp_date timestamp;

    DROP TEMPORARY TABLE IF EXISTS tblResults;
    CREATE TEMPORARY TABLE IF NOT EXISTS tblResults(
        selected_date timestamp,
        total_value int
    );

    SET tmp_date = in_from_date;

    WHILE tmp_date < in_to_date DO

        SELECT count(*) as total_events FROM event e where e.scheduled between tmp_date and tmp_date + interval 1 day;
        set tmp_date = DATE_ADD(tmp_date, INTERVAL 1 DAY);
    END WHILE;
END$$

DELIMITER ;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM