我正在尝试运行此程序。
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 //附近使用正确的语法 第2行的CREATE PROCEDURE updateBooks(IN book_id VARCHAR(20),IN units INT)' 第1行第1列
错误代码1064,SQL状态42000:您的SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在'END //附近使用正确的语法 DELIMITER'在第1行 第8行第1栏
任何帮助都会很棒。我正在使用mySQL版本5.6
答案 0 :(得分:3)
您必须使用分隔符终止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 演示