mysql不同的行更新取决于变量(存储过程)

时间:2016-04-30 16:33:55

标签: mysql if-statement stored-procedures phpmyadmin sql-update

CREATE PROCEDURE update_table(
    IN choice INT(4),
    IN id VARCHAR(50),
    IN string VARCHAR(50)
)
BEGIN
UPDATE salesman
set salesman_name = IF(choice = 1, string, salesman_name)
where salesman_id = id
UPDATE salesman
set date = IF(choice = 2, string, date)
where salesman_id = id
END

如果choice为1,则将salesman_name更改为string

如果choice为2,则将日期更改为string

你可以解释一下我做错了吗?

单个update可以正常工作,我猜是有另一种方法可以实现,但我不能。

if choice = 1 then
update salesman set salesman_name = string where salesman_id = id

...我也试过这个版本,但仍然没有工作。

DELIMITER //
CREATE PROCEDURE update_table(
    IN choice INT(4),
    IN id VARCHAR(50),
    IN string VARCHAR(50)
)
BEGIN
UPDATE salesman set salesman_name = IF(choice = 1, string, salesman_name) where salesman_id = id;
UPDATE salesman set date = IF(choice = 2, string, date) where salesman_id = id;
END //
DELIMITER ;

您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第1行的“DELIMITER”附近使用正确的语法

也这样说:

错误:未知的标点字符串@ 11 (最后一行)

1 个答案:

答案 0 :(得分:0)

当存储过程有多个语句时,它们需要以;

终止

要做到这一点,您需要暂时更改分隔符,以便结束该过程。这是一个SO答案,其中包含如何执行此操作的示例:MySQL create stored procedure syntax with delimiter