【问题标题】:MySQL - Stored Procedure Syntax ErrorMySQL - 存储过程语法错误
【发布时间】:2014-07-12 12:36:18
【问题描述】:

下面的“程序”有什么问题阻止我创建这个存储过程?任何帮助或清理建议都会很棒。

DELIMITER $$
DROP PROCEDURE IF EXISTS baixa_estacio;
CREATE PROCEDURE baixa_estacio (IN id int(11))
BEGIN
    DECLARE estacio2 INT;
    DECLARE temps1 TIME(7);
    DECLARE dist1 FLOAT;
    DECLARE estacio1 INT;
    DECLARE estacio3 INT;
    DECLARE temps2 TIME(7);
    DECLARE dist2 FLOAT;
    SELECT id_estacioescomunica, temps, distancia INTO estacio2, temps1, dist1 FROM escomunica WHERE escomunica.id_estacioescomunica= id;
    SELECT id_estaciocomunicada,id_estacioescomunica,temps,distancia INTO estacio1,estacio3, temps2, dist2 FROM escomunica WHERE escomunica.id_estacioescomunicada = id;
    DELETE FROM escomunica WHERE ((id_estacioescomunica = id)  AND (EsTransbordament)=1);
    DELETE FROM escomunica WHERE ((id_estaciocomunicada = id) AND (EsTransbordament)=0);
    UPDATE escomunica SET id_estacioescomunica =  estacio3, temps = SEC_TO_TIME(( TIME_TO_SEC (temps1) + TIME_TO_SEC (temps2))), distancia - (dist1 + dist2) WHERE ((id_estacioescomunica-id)AND(estransbordament)=0);
    END;
    $$
    DELIMITER;

我不知道有什么问题。消息错误显示如下:

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在“CREATE PROCEDURE baixa_estacio (IN id INT) 附近使用的正确语法” 开始 声明 estacio2 INT; ' 在第 2 行

【问题讨论】:

  • 您需要使用$$ 来分隔drop,因为您之前已经更改了行中的分隔符。

标签: mysql stored-procedures


【解决方案1】:

您必须使用您定义的分隔符来终止查询外部存储过程。 即DROP PROCEDURE IF EXISTS baixa_estacio$$ not ";"

【讨论】:

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