我想知道在使用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 - 您的SQL语法出错;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 靠近'@driver INT(3),IN @orderNum INT(5))BEGIN INSERT INTO 第1行
order
(deliveredBy
,`'
答案 0 :(得分:0)
带有where子句的insert语句的语法无效,并没有多大意义。 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 ;
答案 1 :(得分:0)
输入参数名称必须是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;