Синтаксическая ошибка, близкая к РЕКУРСИВНОЙ при попытке создать процедуру в mysql

#mysql #database #mariadb #datagrip

#mysql #База данных #мариадб #datagrip

Вопрос:

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

[42000][1064] У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с РЕКУРСИВНЫМИ потомками КАК (ВЫБЕРИТЕ e.activity, ПРИВЕДИТЕ (например,activity КАК CHAR(500)) КАК’ в строке 3

Я работаю на Windows

версия mysql 8.0.15 для Win64 на x86_64 (сервер сообщества MySQL — GPL) Версия сервера: 5.5.5-10.1.37-MariaDB mariadb.org бинарное распределение

 CREATE DEFINER=`root`@`localhost` PROCEDURE `findPaths`()
BEGIN
WITH RECURSIVE descendants AS
(
SELECT e.activity, CAST(e.activity AS CHAR(500)) AS path, n.cost as total_cost
FROM edges e JOIN nodes n
ON e.activity=n.code
WHERE e.activity='A'
UNION ALL
SELECT e.activity, CONCAT(d.path, ',', e.activity), d.total_cost (SELECT cost FROM nodes WHERE code=e.activity)
FROM descendants d, edges e
WHERE e.parent=d.activity
)
SELECT * FROM descendants WHERE activity='M' OR activity='N' ORDER BY total_cost;

END
 

Я хочу, чтобы процедура была создана и доступна для запуска

Ответ №1:

Рекурсивный CTE, добавленный в MariaDB-10.2

Из вашей строки версии у вас есть MariaDB-10.1.37

Комментарии:

1. downloads.mariadb.org я полагаю, у него есть установщики. Не уверен, как она была установлена изначально.