Mysql建立儲存過程時出現ERROR 1064錯誤
阿新 • • 發佈:2019-02-05
ERROR 1064 (42000):ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE i INT DEFAULT 0' at line 1
建立儲存過程時,報錯了。
- DROPPROCEDURE IF EXISTS GameServerMergePro;
-
CREATEPROCEDURE `GameServerMergePro` (
- IN dbSchema VARCHAR(50) characterset utf8,
- IN sName VARCHAR(50) characterset utf8,
- OUT error_code INT
- )
- begin
- DECLARE ddddi INTDEFAULT 0;
- end;
琢磨了半天,原來Mysql直譯器一遇到;號時就結束,回車以後就執行了。但是現在並不希望Mysql這麼做,因為儲存過程中可能包含很多分號的語句,所以怎麼辦了,很簡單Mysql給我們提供了delimiter關鍵字,delimiter作用就是把;分號替換成指定的符號,比如//或$$。當再出現//或$$時,Mysql直譯器才會執行命令。
指令碼改成下面之後,執行就不會報錯了。
- DELIMITER //
- DROPPROCEDURE IF EXISTS GameServerMergePro;
- CREATEPROCEDURE `GameServerMergePro` (
- IN dbSchema VARCHAR(50) characterset utf8,
- IN sName VARCHAR(50) characterset utf8,
- OUT error_code INT
- )
- begin
- DECLARE ddddi INTDEFAULT 0;
- end;
- //
-
DELIMITER ;