Синтаксическая ошибка около RECURSIVE при попытке создать процедуру в MySQL - PullRequest
0 голосов
/ 17 апреля 2019

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

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

Iя работаю на windows

mysql Ver 8.0.15 для Win64 на x86_64 (MySQL Community Server - 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 Ответ

1 голос
/ 17 апреля 2019

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

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

...