语法错误更新案例mysql

时间:2015-01-06 20:35:50

标签: mysql database syntax-error

我正在尝试更新数据库中的表格,我已经环顾四周但似乎无法让它工作。

我想要实现的是更新表格中的“数量”列。

如果数量> 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行 - 语法错误缺少'结束'

我已经把“结束”放在你看来,我不确定我做错了什么。有人能指出我正确的方向。感谢。

2 个答案:

答案 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