首页 > 解决方案 > “分隔符”在此位置无效,需要 CREATE

问题描述

我收到一个错误“分隔符”在这个位置无效,期待创建“因为我正在编写一个存储过程并且无法找出原因。我认为这可能是 MySQL 工作台的问题,因为以下代码给出了相同的错误,但直接从本网站复制。

DELIMITER $$
CREATE PROCEDURE GetTotalOrder()
BEGIN
    DECLARE totalOrder INT DEFAULT 0;
    
    SELECT COUNT(*) 
    INTO totalOrder
    FROM orders;
    
    SELECT totalOrder;
END$$
DELIMITER ;

编辑:我真正的存储过程是:

DELIMITER //
CREATE PROCEDURE GetSimilar(inputdate char(10))
BEGIN
    Declare id(tinyint) DEFAULT 0;
    Set id := (select t.IdTimelineinfo
        From timelineinfo t
        WHERE t.Date = inputdate);
    SELECT t.Date From timelineinfo t where t.date = inputdate;
    SELECT o.Name, o.Race, o.Sex, o.IdOfficer
        FROM timelineinfo
        JOIN timelineinfo_officer ON timelineinfo.IdTimelineinfo = timelineinfo_officer.IdTimelineinfo      
        JOIN officers o ON timelineinfo_officer.IdOfficer = o.IdOfficer
        WHERE timelineinfo.IdTimelineinfo = id
        UNION
    SELECT s.IdSubject, s.Name, s.Race, s.Sex
        FROM timelineinfo
        JOIN timelineinfo_subject ON timelineinfo.IdTimelineinfo = timelineinfo_subject.IdTimelineinfo      
        JOIN subjects s ON timelineinfo_subject.IdSubject = s.IdSubject
        WHERE timelineinfo.IdTimelineinfo = id;
        UNION
    Select * 
        From media m
        Where (m.IdTimelineinfo = id);
END //
DELIMITER ;

标签: mysqlsqlmysql-workbench

解决方案


注意编辑过程 SQL 代码的位置。有一个专用的例程对象编辑器(就像表、触发器、视图等一样),它只接受与其关联对象类型的 SQL 代码。因此,它们不需要分隔符,如果您使用分隔符,甚至会发出错误信号。

另一方面,您始终可以在 SQL IDE 代码编辑器中直接编辑 SQL 代码,而无需执行此类特殊处理。在这种情况下,您需要分隔符。


推荐阅读