2013-11-29 72 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