MYSQL存储过程实现in传入参数 where in('1','2')
2014-12-05 11:07
621 查看
android 服务器端开发中遇到这么一个问题:
突然发现将字符串传入到存储过程,参数为 '1','2' ,竟然执行无效
所以看到网上有在存储过程中直接拼凑sql的代码,今天也试了一下,可以执行了,代码如下:
以上存储过程里面拼凑出来的sql代码是:
突然发现将字符串传入到存储过程,参数为 '1','2' ,竟然执行无效
所以看到网上有在存储过程中直接拼凑sql的代码,今天也试了一下,可以执行了,代码如下:
CREATE DEFINER = 'abc'@'%' PROCEDURE ConfirmAcceptorListProc(in p_task_id varchar(20),in p_user_ids text,out p_msgtype varchar(20),out p_msg varchar(20)) begin DECLARE m_user_ids varchar(1000); DECLARE t_error INTEGER DEFAULT 0; DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET t_error=1; SET @SEL='update go_task_acceptor set status =\'2\' where status = \'1\' AND task_id = \''; set @sentence = concat(@sel,p_task_id,'\' AND acceptor_id in (',p_user_ids,');'); -- 连接字符串生成要执行的SQL语句 prepare stmt from @sentence; -- 预编释一下。 “stmt”预编释变量的名称, START TRANSACTION; execute stmt; -- 执行SQL语句 select row_count() into p_msg; if t_error = 1 then ROLLBACK; set p_msgtype = '-1'; else COMMIT; set p_msgtype = '1'; end if; deallocate prepare stmt; -- 释放资源 end
以上存储过程里面拼凑出来的sql代码是:
update go_task_acceptor set status ='2' where task_id = p_task_id and status = '1' and acceptor_id in ('s','4');
相关文章推荐
- 在sqlserver存储过程中给in参数传带逗号值的办法,如传'1','2','3'这样的
- MySQL 存储过程或者函数中传参数实现where id in(1,2,3,...)IN条件拼接
- 在sqlserver存储过程中给in参数传带逗号值的办法,如传'1','2','3'这样的
- mysql 按年度、季度、月度、周、日SQL统计查询,mysql 存储过程 中 in 和 FIND_IN_SET 传递多个参数的使用
- mysql高级 存储过程[2] ~之 传入的参数 && 控制结构
- MySQL 存储过程传参数实现where id in(1,2,3,...)示例
- mysql 实现按 where in () 中的顺序排序,用find_in_set() 函数
- mysql通过find_in_set()函数实现where in()顺序排序
- MySQL 存储过程传参数实现where id in(1,2,3,...)示例
- Mysql where in中的参数传入字符串(字符串拼接)
- 将list<对象>转换成DataTable,把DataTable转换成参数传入存储过程实现批量插入数据
- MySQL 存储过程传参数实现where id in(1,2,3,...)示例
- MySQL 存储过程传参数问题:实现 where id in(1,2,3,...)
- 创建带 IN 和 OUT 参数的 MySQL 存储过程
- MySQL 存储过程传参数实现where id in('40288c81494f088601494f92938d0002,40288c81494f088601494f92938d0012,')示例
- 创建存储过程,以部门编号为参数返回该部门的人数及平均工资(返回一个值可以通过函数来实现,但如果要返回多个值,需要使用out或in out模式参数实现)
- mysql存储过程传入表名做参数,进行分页处理
- MySQL——存储过程参数in,out,inout的作用
- update 表名 set 某列名=now() where user in('user1','user2','user3');
- MySQL 存储过程传参数问题:实现 where id in(1,2,3,...)