1. 程式人生 > >Mysql建立儲存過程時出現ERROR 1064錯誤

Mysql建立儲存過程時出現ERROR 1064錯誤

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

建立儲存過程時,報錯了。

  1. DROPPROCEDURE IF EXISTS GameServerMergePro;  
  2. CREATEPROCEDURE `GameServerMergePro` (  
  3.     IN dbSchema VARCHAR(50) characterset utf8,  
  4.     IN sName VARCHAR(50) characterset utf8,  
  5.     OUT error_code INT
  6. )   
  7. begin
  8. DECLARE ddddi INTDEFAULT 0;  
  9. end;  

琢磨了半天,原來Mysql直譯器一遇到;號時就結束,回車以後就執行了。但是現在並不希望Mysql這麼做,因為儲存過程中可能包含很多分號的語句,所以怎麼辦了,很簡單Mysql給我們提供了delimiter關鍵字,delimiter作用就是把;分號替換成指定的符號,比如//或$$。當再出現//或$$時,Mysql直譯器才會執行命令。

指令碼改成下面之後,執行就不會報錯了。

  1. DELIMITER //   
  2. DROPPROCEDURE IF EXISTS GameServerMergePro;  
  3. CREATEPROCEDURE `GameServerMergePro` (  
  4.     IN dbSchema VARCHAR(50) characterset utf8,  
  5.     IN sName VARCHAR(50) characterset utf8,  
  6.     OUT error_code INT
  7. )   
  8. begin
  9. DECLARE ddddi INTDEFAULT 0;  
  10. end;  
  11. //  
  12. DELIMITER ;