在 mySql 中使用分隔符时出错 [英] Error using Delimiters in mySql
问题描述
我正在尝试运行此程序.
i am trying to run this procedure.
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 ;
虽然我已经在各个地方检查过语法对我来说似乎是正确的.但是我收到以下错误
though i have checked at various places an syntax seems right to me. BUT i am getting the following error
错误代码 1064,SQL 状态 42000:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在DELIMITER//"附近使用的正确语法CREATE PROCEDURE updateBooks (IN book_id VARCHAR(20), IN units INT)' 在第 2 行第 1 行,第 1 列
Error code 1064, SQL state 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 'DELIMITER // CREATE PROCEDURE updateBooks (IN book_id VARCHAR(20), IN units INT)' at line 2 Line 1, column 1
错误代码 1064,SQL 状态 42000:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 'END//附近使用的正确语法第 1 行的 DELIMITER'第 8 行,第 1 列
Error code 1064, SQL state 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 'END // DELIMITER' at line 1 Line 8, column 1
任何帮助都会很棒.并且我使用的是 mySQL 5.6 版
Any help would be great. ANd i am using mySQL version 5.6
推荐答案
你必须用一个分隔符(在你的例子中它是一个分号)终止 USE
语句.
You have to terminate USE
statement with a delimiter (in your case it is a semicolon).
USE dbsample;
^
另一个问题是您在
... SET quantity = quantity – units
^
<小时>
UPDATE: 现在,由于 UPDATE
是您的过程中唯一的语句,您不必使用 BEGIN ... END
块和更改 DELIMITER
UPDATE: Now since UPDATE
is the only statement in your procedure you don't have to use BEGIN ... END
block and change DELIMITER
CREATE PROCEDURE updateBooks(IN book_id VARCHAR(20), IN units INT)
UPDATE books
SET quantity = quantity - units
WHERE isbn = book_id;
这是SQLFiddle 演示
Here is SQLFiddle demo
这篇关于在 mySql 中使用分隔符时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!