我经常很难在 mysql 中创建存储过程。应该很好的语法只是在存储过程中不被解析。这是一个仍然没有被解析的简化版本。我无法将此代码转换为可以解析的内容。
update..set 子句有问题
更新
我更加简化了代码。问题依然存在。错误消息似乎是隆隆声
更新 2
已解决,感谢 Mark Byers。into
-语句中的子句必须select
仔细定位。请注意 mysql 错误消息是多么误导和糟糕!
ERROR 1064 (42000):您的 SQL 语法有错误;检查手册
UPDATE page SET lft = 1 where lft > 3 AN' at line 22
编码:
CREATE PROCEDURE `move_page_right`( subject_id SMALLINT UNSIGNED, reference_id SMALLINT UNSIGNED)
BEGIN
select
p.lft,
p.rgt,
p.rgt - p.lft,
p.rgt + 1
into
@subject_old_lft,
@subject_old_rgt,
@subject_width,
@subject_old_right_sibling_lft
from page p
where p.page_id = subject_id;
select p.rgt + 1
from page p
into @subject_new_lft
where p.page_id = reference_id;
UPDATE page
SET
lft = 1
where lft > 3 AND lft < 3;
END