Синтаксическая ошибка с MySql Workbench и оператором IF - PullRequest
0 голосов
/ 14 апреля 2010

Я перехожу с T-SQL на синтаксис MySql и не знаю, как преодолеть эту синтаксическую ошибку, данную Workbench 5.1.18:

-- --------------------------------------------------------------------------------
-- Routine DDL
-- --------------------------------------------------------------------------------
DELIMITER //

CREATE PROCEDURE `SysTicket`.`GetProductionLines` (aId INT, aActive INT, aResponsible VARCHAR(8000))
BEGIN
    IF(aId > 0) THEN SELECT * FROM ProductionLine WHERE Id = @Id;

    ELSE IF( aActive <> -1 AND aResponsible = '|$EMPTYARG$|') THEN SELECT * FROM ProductionLine;

    ELSE IF(aResponsible = '|$EMPTYARG&|') THEN SELECT * FROM ProductionLine WHERE Active = aActive;

    ELSE SELECT * FROM ProductionLine WHERE Active = aActive AND Responsible LIKE CONCAT('%', aResponsible, '%');

    END IF;    
END//

Это говорит о синтаксической ошибке около END (последняя строка) Ты заранее.

Ответы [ 2 ]

0 голосов
/ 14 апреля 2010

Разобрался ... Правильный синтаксис:

ELSEIF

вместо

ELSE IF
0 голосов
/ 14 апреля 2010

Снимите скобки с операторов IF для одиночных сравнений или добавьте запятые вместо AND.

http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html#function_if

...