mysql存储过程参数带有逗号问题

2024-12-14 17:28:28
推荐回答(2个)
回答1:

这个应该可以使用字符串拼接,你是不是这样写存储过程:
create procedure p_proc(var_in int)
begin
delete from [tableName] where [colName] in (var_in);

end

然后又这样调用:
call p_proc(1, 2, 3);
这样肯定不行,那么你可以这样:
create procedure p_proc(var_in varchar(5000))
begin

set @sql = concat("delete from [tableName] where [colName] in (", var_in, ")");

prepare stmt_exe_sql from @sql;
execute stmt_exe_sql;
deallocate prepare stmt_exe_sql;
end

这样就相当于把(1, 2, 3)拼接成语句"delete from [tableName] where [colName] in (1, 2, 3)", 然后执行,就可以删除了。

回答2:

MySQL教程4 MySQL8运算符、函数、存储过程及新增数据类型 17.之创建带有IN和OUT参数的存储过程 学习猿地