2013-11-29 40 views
0

我正在嘗試運行此過程。錯誤在mySql中使用分隔符

USE dbsample 
DELIMITER // 
CREATE PROCEDURE updateBooks (IN book_id VARCHAR(20), IN units INT) 
BEGIN 
UPDATE books 
SET quantity = quantity – units 
WHERE isbn = book_id; 
END // 
DELIMITER ; 

雖然我已經在各個地方查了一句語法似乎對我很好。但我收到以下錯誤

錯誤代碼1064,SQL狀態42000:您的SQL語法中有錯誤;檢查對應於你的MySQL服務器版本正確的語法使用近 'DELIMITER // CREATE PROCEDURE updateBooks(IN book_id VARCHAR(20),以單位INT)' 第2行 1號線,1列

手冊

錯誤代碼1064,SQL狀態42000:您的SQL語法錯誤;檢查對應於你的MySQL服務器版本在1號線 8號線附近使用「END // DELIMITER」正確的語法手冊,第1列

任何幫助將是巨大的。和我使用MySQL版本5.6

回答

2

必須終止USE語句與分隔符(在你的情況下,它是一個分號)。

USE dbsample; 
      ^

的另一個問題是不是在

... SET quantity = quantity – units 
          ^

減號(-)您使用破折號()更新:現在既然UPDATE是唯一的聲明您不必使用BEGIN ... END區塊並更改DELIMITER

CREATE PROCEDURE updateBooks(IN book_id VARCHAR(20), IN units INT) 
UPDATE books 
    SET quantity = quantity - units 
WHERE isbn = book_id; 

這裏是SQLFiddle演示

+0

感謝的是固定的,但我有這個其他錯誤 錯誤代碼1064,SQL狀態42000:您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以獲得在附近使用的正確語法' - units WHERE isbn = book_id; END'在第4行 – urwaCFC

+0

我在想可能是使用下劃線是不正確的..但我確實要確保在將名稱更改爲別的之前...... – urwaCFC

+0

問題是您使用的是破折號而不是減號字符。查看更新的答案和sqlfiddle演示。 – peterm