我正在尝试更新数据库中的表格,我已经环顾四周但似乎无法让它工作。
我想要实现的是更新表格中的“数量”列。
如果数量> 0然后数量 - xxx值 如果数量是< 0然后将状态列设置为0
这是我的代码:
CREATE DEFINER=`root`@`localhost` PROCEDURE `update_quantity`(IN iarticleid varchar(45), IN iquantity int(11))
BEGIN
UPDATE product_varities set product_varities.quantity = CASE
WHEN product_varities.quantity > 0 Then product_varities.quantity = product_varities.quantity - iquantity
WHEN product_varities.quantity < 0 THEN product_varities.`status` = 0
WHERE product_varities.article_id = iarticleid;
END CASE;
END
MySQL Workbench中显示的当前错误消息: 第5行语法错误'end' 第7行 - 语法错误缺少'结束'
我已经把“结束”放在你看来,我不确定我做错了什么。有人能指出我正确的方向。感谢。
答案 0 :(得分:3)
如果您愿意,可以将其写为单个update
:
UPDATE product_varities pv
SET pv.quantity = (CASE WHEN pv.quantity > 0 THEN pv.quantity - iquantity
ELSE pv.quantity END),
pv.status = (CASE WHEN pv.quantity < 0 THEN 0 ELSE pv.status)
WHERE pv.article_id = iarticleid;
答案 1 :(得分:1)
我认为你正在尝试在表达式中进行流控制,而这不是这样做的方法。
我认为做这样的事情会更好:
CREATE PROCEDURE `update_quantity`(IN iarticleid varchar(45), IN iquantity int(11))
BEGIN
update product_varities
set quantity = quantity - iquantity
where article_id = iarticleid and quantity > 0;
update product_varities
set status = 0
where article_id = iarticleid and quantity < 0;
END