尝试在 mysql 中创建过程时 RECURSIVE 附近出现语法错误

Syntax error near RECURSIVE when trying to create a procedure in mysql

我正在尝试使用 datagrip 在 mysql 中实施一个程序,但我仍然遇到此错误。

[42000][1064] 您的 SQL 语法有误;查看与您的 MariaDB 服务器版本对应的手册,了解在第 3

行 'RECURSIVE descendants AS ( SELECT e.activity, CAST(e.activity AS CHAR(500)) AS' 附近使用的正确语法

我正在 运行宁 windows

mysql x86_64 上的 Win64 版本 8.0.15(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

我希望创建并访问该过程,以便 运行

在 MariaDB-10.2 中添加的递归 CTE

根据你的版本字符串,你有 MariaDB-10.1.37