Как использовать при l oop в mysql (MariaDB) - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь использовать пока l oop в моей хранимой процедуре, но он не хочет принимать синтаксис. Я использую Heidi SQL как студию, база данных MySQL MariaDB.

BEGIN
CREATE TEMPORARY TABLE taskTemp
SELECT jc.Id as JID
FROM jobs as j 
left join jobcards     as jc   on j.JobcardId = jc.Id
left join tasks        as t    on j.Id = t.JobId
left join assignments  as a    ON t.Id = a.TaskId
WHERE a.PerformerId = currentUserId
group by jc.Id;

SELECT GROUP_CONCAT(JID  SEPARATOR ',') AS result
INTO @test
FROM taskTemp;

CREATE TEMPORARY TABLE UserTasks
Select j.Id ,j.JobcardId as JcID, t.Id as TaskID ,js.Name as TaskStatus
from jobs                        as j 
left join tasks             as t on j.Id = t.JobId
     Join assignments       as a on t.Id = a.TaskId and a.PerformerId = currentUserId
left Join jobstatuses       as js on t.StatusId = js.Id
WHERE FIND_IN_SET(j.JobcardId, @test);

alter table UserTasks add UserStatus longtext;

SET @n=0;
SET @i=0;

SELECT COUNT(*) FROM UserTasks INTO @n;

WHILE (@n>0) DO
SET @n=@n-1;
END WHILE;


drop temporary table taskTemp;
drop temporary table UserTasks;
END

Выше вы можете увидеть всю мою хранимую процедуру, поэтому проблема возникает в этой строке:

WHILE (@n>0) DO
SET @n=@n-1;
END WHILE;*

*

Я пробовал без скобок также @n> 0, но тоже безуспешно

1 Ответ

0 голосов
/ 24 января 2020

Я думаю, что это проблема с настройкой режима SQL в вашей среде mariadb. Вы можете попробовать один из следующих вариантов:

1. Используйте синтаксис oracle l oop:

SET @n=5;
WHILE @n>0 LOOP
    SET @n=@n-1;
    SELECT @n;
END LOOP;

2. Измените режим sql на традиционный:

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