Bubinga
Bubinga

Reputation: 703

"Delimiter" is not valid at this position, expecting CREATE

I was getting an error of "Delimiter" is not valid at this position, expecting CREATE" as I was writing a stored procedure and couldn't figure out the cause. I think it might be an issue with MySQL workbench possibly, because the following code gives the same error but was copied straight off of this website.

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

Edit: My real stored procedure is:

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 ;

Upvotes: 2

Views: 5094

Answers (1)

Mike Lischke
Mike Lischke

Reputation: 53345

Watch out where you edit the procedure SQL code. There's a dedicated routine object editor (just like there are for tables, triggers, views etc.), which only accept SQL code for their associated object type. Hence they don't need a delimiter and even signal an error if you use one.

On the other hand you can always directly edit SQL code in the SQL IDE code editors, where no such special handling is implemented. In this case you need the delimiter.

Upvotes: 2

Related Questions