建立一个存储过程删除多个用户记录。
create procedure DeleteUser(IN ids VARCHAR)
begin
  update UserInfo set DeleteFlag=1 
    where UserID in (ids);
end;这里ids是字符串,如"1,3,5,65,231",而UserID在表中是int型的,
如何在存储过程中把字符串型的"1,3,5,65,231"转换成int型的集合... where UserID in (1,3,5,65,231)谢谢!

解决方案 »

  1.   

    create procedure DeleteUser(IN ids VARCHAR)
    begin
     update UserInfo set DeleteFlag=1  
       where find_in_set(UserID ,ids);
    end;
      

  2.   

    find_in_set()MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  3.   


    create procedure DeleteUser(IN ids VARCHAR(100))
    begin
         DECLARE strsql varchar(100);     
         SET strsql= CONCAT('update t2 set b=1 where a in (',ids ,')');     
         SET @sql1=strsql;     
         PREPARE stmt_p FROM @sql1;     
         EXECUTE stmt_p; 
    end;CALL DeleteUser('1,200');