尝试在 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
我正在尝试使用 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