试试这个(语法错误是固定的,没有CAST功能)-
DELIMITER $$CREATE PROCEDURE procedure1(IN strIDs VARCHAr(255))BEGIN DECLARE strLen INT DEFAULT 0; DECLARE SubStrLen INT DEFAULT 0; IF strIDs IS NULL THEN SET strIDs = ''; END IF;do_this: LOOP SET strLen = LENGTH(strIDs); UPDATE TestTable SET status = 'C' WHERe Id = SUBSTRING_INDEX(strIDs, ',', 1); SET SubStrLen = LENGTH(SUBSTRING_INDEX(strIDs, ',', 1)); SET strIDs = MId(strIDs, SubStrLen, strLen); IF strIDs = NULL THEN LEAVE do_this; END IF; END LOOP do_this;END$$DELIMITER ;
您可以使用Debugger for MySQL调试过程。
编辑2:
我会不做任何程序。尝试使用FIND_IN_SET函数,例如-
SET @strIDs = '1,2,3'; -- your id valuesUPDATE TestTable SET status = 'C' WHERe FIND_IN_SET(id, @strIDs);
或创建一个临时文件。表,将其填充
id值,然后将这两个表加入UPDATE语句。



