MySQL 中的存储过程有问题
Having trouble with stored procedures in MySQL
我想知道使用 XAMPP 创建此存储过程哪里出错了。
use PizzaShop;
delimiter /
CREATE PROCEDURE `updateDelivery` (IN @driver INT(3), IN @orderNum INT(5))
BEGIN
INSERT INTO `orders`(`deliveredBy`,`complete`) VALUES(@driver ,TRUE) WHERE orders.Order_No = @orderNum;
end;
/
delimiter ;
我得到的错误是
1064 - 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 '@driver INT(3), IN @orderNum INT(5)) BEGIN INSERT INTO
order
(deliveredBy
,`' at line 1
带有 where 子句的插入语句的语法无效且没有多大意义。 where 子句的存在表明您可能想要做的是更新?
use PizzaShop;
delimiter /
CREATE PROCEDURE `updateDelivery` (IN driver INT(3), IN orderNum INT(5))
BEGIN
UPDATE orders
SET deliveredBy = driver, completed = TRUE
WHERE orders.Order_No = orderNum;
END /
delimiter ;
输入参数名称需要是 SP 的局部变量,但不能使用会话变量标识符语法。
变化:
(IN @driver INT(3), IN @orderNum INT(5))
收件人:
(IN driver INT(3), IN orderNum INT(5))
SP 正文中的 insert
语句将是 :
INSERT INTO `orders`(`deliveredBy`,`complete`)
VALUES (driver ,TRUE) WHERE orders.Order_No = orderNum;
我想知道使用 XAMPP 创建此存储过程哪里出错了。
use PizzaShop;
delimiter /
CREATE PROCEDURE `updateDelivery` (IN @driver INT(3), IN @orderNum INT(5))
BEGIN
INSERT INTO `orders`(`deliveredBy`,`complete`) VALUES(@driver ,TRUE) WHERE orders.Order_No = @orderNum;
end;
/
delimiter ;
我得到的错误是
1064 - 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 '@driver INT(3), IN @orderNum INT(5)) BEGIN INSERT INTO
order
(deliveredBy
,`' at line 1
带有 where 子句的插入语句的语法无效且没有多大意义。 where 子句的存在表明您可能想要做的是更新?
use PizzaShop;
delimiter /
CREATE PROCEDURE `updateDelivery` (IN driver INT(3), IN orderNum INT(5))
BEGIN
UPDATE orders
SET deliveredBy = driver, completed = TRUE
WHERE orders.Order_No = orderNum;
END /
delimiter ;
输入参数名称需要是 SP 的局部变量,但不能使用会话变量标识符语法。
变化:
(IN @driver INT(3), IN @orderNum INT(5))
收件人:
(IN driver INT(3), IN orderNum INT(5))
SP 正文中的 insert
语句将是 :
INSERT INTO `orders`(`deliveredBy`,`complete`)
VALUES (driver ,TRUE) WHERE orders.Order_No = orderNum;