2012-11-19 47 views
1

我創建了一個MySQL腳本,該腳本創建一個存儲過程,該存儲過程在存儲過程的IN參數給定的表中插入一個新行。但是,當我們嘗試運行該腳本時,會顯示以下錯誤:MySQL:存儲過程插入語句錯誤

錯誤1064(42000)在第22行:您的SQL語法錯誤; 檢查對應於你的MySQL服務器版本在3號線

使用「」附近的 正確的語法手冊這基本上是在腳本文件的存儲過程:

CREATE PROCEDURE 'packagename'.`procedureName` 
(IN param1 DATE, 
IN param2 TIME, 
IN param3 VARCHAR(45), 
IN param4 VARCHAR(100)) 
BEGIN 
    INSERT INTO packagename.table (`param1`, `param2`, `param3`, `param4`) 
    VALUES (param1, param2, param3, param4); 
END; 

任何想法?

回答

1
  • 變化DELIMITER
  • 使用反引號,而不是在包名
  • ,如果你的表的名稱是軟件包名table單引號。 table,用反引號

查詢逃避它,

DELIMITER $$ 
CREATE PROCEDURE `packagename`.`procedureName` 
(
     IN param1 DATE, 
     IN param2 TIME, 
     IN param3 VARCHAR(45), 
     IN param4 VARCHAR(100) 
) 
BEGIN 
    INSERT INTO packagename.`table` (`param1`, `param2`, `param3`, `param4`) 
      VALUES (param1, param2, param3, param4); 
END $$ 
DELIMITER ; 
+0

我想這一點,但是,我得到一個不同的錯誤信息:'在第23行錯誤1064(42000):你在你的SQL錯誤句法;檢查與您的MySQL服務器版本對應的手冊,以在'DELIMETER $$ CREATE PROCEDURE' –

+0

'DELIMITER'不是'DELIMETER' –

+1

附近使用正確的語法...對不起...保持閱讀錯誤...並且謝謝,它現在的作品... –