【发布时间】:2018-01-07 20:43:46
【问题描述】:
我正在尝试使用此语句更新 bplustree 表的深度列,该语句在 MYSQL 上运行良好,但在 oracle 上出现此错误:
BEGIN
WHILE EXISTS (SELECT * FROM bplustree WHERE depth IS NULL)
LOOP
UPDATE T SET T.depth = P.depth + 1
FROM bplustree AS T INNER JOIN bplustree AS P
ON (T.parent_node_id = P.node_id)
WHERE P.depth >= 0 AND T.depth IS NULL;
END LOOP;
END;
错误报告 -
ORA-06550:第 4 行,第 3 列:
PL/SQL:ORA-00933:SQL 命令未正确结束
ORA-06550:第 3 行,第 2 列:
PL/SQL:忽略 SQL 语句
06550. 00000 - “第 %s 行,第 %s 列:\n%s”
*原因:通常是 PL/SQL 编译错误。
【问题讨论】:
-
Oracle 不支持
UPDATE中的FROM子句,所以我不知道您要做什么。 -
我试图通过放置一个循环遍历树的所有节点来计算树中每个节点的深度@GordonLinoff
标签: sql oracle inner-join