"Delimiter" 在此位置无效,需要 CREATE
"Delimiter" is not valid at this position, expecting CREATE
我在编写存储过程时遇到错误“分隔符”在此位置无效,期待创建“但无法找出原因。我认为这可能是 MySQL workbench 可能,因为下面的代码给出了相同的错误,但是直接从 this website.
复制了
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 ;
注意编辑程序 SQL 代码的位置。有一个专用的例程对象编辑器(就像表、触发器、视图等一样),它只接受 SQL 相关对象类型的代码。因此,他们不需要分隔符,如果您使用分隔符,甚至会发出错误信号。
另一方面,您始终可以在 SQL IDE 代码编辑器中直接编辑 SQL 代码,其中没有实现此类特殊处理。在这种情况下,您需要分隔符。
我在编写存储过程时遇到错误“分隔符”在此位置无效,期待创建“但无法找出原因。我认为这可能是 MySQL workbench 可能,因为下面的代码给出了相同的错误,但是直接从 this website.
复制了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 ;
注意编辑程序 SQL 代码的位置。有一个专用的例程对象编辑器(就像表、触发器、视图等一样),它只接受 SQL 相关对象类型的代码。因此,他们不需要分隔符,如果您使用分隔符,甚至会发出错误信号。
另一方面,您始终可以在 SQL IDE 代码编辑器中直接编辑 SQL 代码,其中没有实现此类特殊处理。在这种情况下,您需要分隔符。