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
...i也尝试过这个版本,但仍然无法工作。
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行“划界器”附近使用的正确语法。
还说:
错误:未知标点符号字符串@ 11 (最后一行)
发布于 2016-04-30 08:41:02
当存储过程有多个语句时,需要用;
为此,您需要临时更改分隔符,以便结束该过程。下面是一个这样的答案,并举例说明了如何做到这一点:MySQL create stored procedure syntax with delimiter
https://stackoverflow.com/questions/36957426
复制相似问题