我写了一个简单的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'
我希望你能帮帮我!
提前致谢
您不能以这种方式编写存储过程。问题是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 会更快,因为它可以使用索引)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句