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;