在MySQL

时间:2017-04-29 13:40:52

标签: mysql

我写了一个简单的mysql程序如下:

DELIMITER $$ 
create procedure trialdbjs.spDeleteEmployees(in IDs nvarchar(1000))
Begin
    Delete from employees_js Where ID IN (IDs);
end$$

它适用于单个ID值,但是当我用逗号分隔值调用该过程时,例如:' 2,4'

例如:
致电trialdbjs.spDeleteEmployees(' 2,4');

这会返回以下错误:截断错误的DOUBLE值:' 2,4'

我希望你能帮助我!

提前致谢

1 个答案:

答案 0 :(得分:0)

您无法以这种方式编写存储过程。问题是IN。它将'2,4'视为字符串值,然后尝试将其转换为数字(因为id是一个数字)。

以下是解决此问题的一种方法:

delimiter $$ 
create procedure trialdbjs.spDeleteEmployees(
    in in_IDs nvarchar(1000)
)
Begin
    Delete from employees_js Where find_in_set(id, in_IDs) > 0;
end$$

还有其他方法可以解决这个问题(动态SQL会更快,因为它可以使用索引)。