??導致1064錯誤的原因很多,需要具體問題具體分析。
??筆者是在執(zhí)行存儲過程中遇到的問題,其中存儲過程語句:
create function CountLayer (p_node_id int) RETURNS int(11) DETERMINISTIC
BEGIN
declare p_result, p_lft, p_rgt int default 0;
if exists (select 1 from tree where node_id = p_node_id) then
begin
select lft, rgt into p_lft, p_rgt from tree where node_id=p_node_id;
select count(*) into p_result from tree where lft <= p_lft and rgt >= p_rgt;
end;
return p_result;
end if;
RETURN 0;
END
??報錯的詳細信息:

報錯信息
??問題出在10行,但出現(xiàn)問題的語句為空,查詢相關解決方案后,找到對應解決方案,即需要修改mysql中解釋器中的命令結束符,需要用到delimiter指令,完成的指令代碼如下:
delimiter //
create function CountLayer (p_node_id int) RETURNS int(11) DETERMINISTIC
BEGIN
declare p_result, p_lft, p_rgt int default 0;
if exists (select 1 from tree where node_id = p_node_id) then
begin
select lft, rgt into p_lft, p_rgt from tree where node_id=p_node_id;
select count(*) into p_result from tree where lft <= p_lft and rgt >= p_rgt;
end;
return p_result;
end if;
RETURN 0;
END
//
??即將mysql解釋器的命令結束符改為//語句,這樣語句就不會在line 10結束后就執(zhí)行,最后能完整執(zhí)行語句。