Mysql命令无法实现存储过程

时间:2011-10-27 03:32:28

标签: mysql mysql-error-1064

我是Mysql的新手。我想创建一个更新产品价格的存储过程。我使用jdbc来实现这个存储过程。但是我的存储过程命令多次失败。以下是mysql代码。 “p”表示产品,“des”表示价格下降,“pro”表示产品名称。 java中的CallableStatement将给出产品名称和产品价格的减少量。因此,存储过程将降低相应产品的价格。

`CREATE PROCEDURE updateP(IN pro CHAR(10), IN des INT)`
`
BEGIN`
     UPDATE customers
    `DECLARE p INT;`
    `SET p = (SELECT price FROM customers WHERE product= pro);`
    `SELECT p;`
    `p = p - des;`
END

1 个答案:

答案 0 :(得分:0)

我认为这就是你所需要的:

DELIMITER $

CREATE PROCEDURE updateP(IN pro CHAR(10), IN des INT)

BEGIN
    UPDATE customers
    SET price = price-des 
    WHERE product= pro;

END$

DELIMITER ;

这应该将当前价格减少一个作为参数传递的减少量。

一个建议:不要将您的程序命名为updateP使用sprocUpdateProductUpdateProduct_sp等全名;如果明天您需要更新某个人,则不再知道updatePPerson还是Product。变量也是如此,使用全名。