Невозможно создать процедуру в MySQL - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь создать следующую процедуру, которую я экспортировал с другого сервера, но получаю сообщение об ошибке.

CREATE PROCEDURE `spGetWorkHistoryByEmployeeID`(pEmployeeID int, pStartIndex int, pCount int)
BEGIN   
    DECLARE LowerBound  INT;  
    DECLARE UpperBound  INT;  
    DECLARE rownum  INT;  
    SET LowerBound = ((pStartIndex - 1) * pCount) + 1;
    SET UpperBound = ((pStartIndex - 1) * pCount) + pCount;

SELECT 
    rank, JobNumber, EarliestDate, LatestDate, BillableHours
FROM
    (SELECT 
        *, @rownum:=@rownum + 1 AS rank
    FROM
        (SELECT 
        j.JobNumber, s.EarliestDate, s.LatestDate, s.BillableHours
    FROM
        service s
    LEFT JOIN Job j ON s.JobID = j.JobID
    WHERE
        s.EmployeeAssignedID = pEmployeeID 
            AND s.LatestDate < NOW()
    ORDER BY s.LatestDate DESC) d, (SELECT @rownum:=0) r) m
WHERE
    rank >= LowerBound
        AND rank <= UpperBound;
END

Ошибка говорит: Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'rank FROM ( SELECT j.JobNumber, s.EarliestDate, s.LatestDat' at line 2

MySql Workbench показывает покачивание под первымSELECT с всплывающей подсказкой "SELECT" is not valid at this position for this server version, expecting '(', WITH

Это MySql Community Server 8.0.12, что важно.

Есть идеи, что не так?процедура существует на другом сервере и работает хорошо.

ОБНОВЛЕНИЕ: проблема решена!очевидно, начиная с v.8.0.2 RANK это зарезервированное слово.Сервер, с которого я скопировал базу данных, является более старой версией.Спасибо @ Ник!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...