Mysql錯誤1064

??導致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í)行語句。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容