1 回答
TA贡献1802条经验 获得超5个赞
您的程序有一些主要问题。
ELT 不会回馈你想要的。它实际上返回完整的 @myArrayOfUsers
如果没有临时表,调试 LOOP 会很棘手,但是当您不确定代码的结果是什么时,请暂时删除循环添加更多 @user 变量并逐行调试
DROP procedure IF EXISTS `basicInsert`;
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `basicInsert`()
BEGIN
SET @myArrayOfUsers = '100,102,105';
#SET @myArrayOfUsers = '106,107,108,';
WHILE(LOCATE(',', @myArrayOfUsers) > 0) DO
SET @value = SUBSTRING_INDEX(@myArrayOfUsers,',',1);
IF (LENGTH(@myArrayOfUsers) > LENGTH(@value) +2) THEN
SET @myArrayOfUsers= SUBSTRING(@myArrayOfUsers, LENGTH(@value) + 2);
INSERT INTO `group_member` VALUES(1001, @value);
ELSE
INSERT INTO `group_member` VALUES(1001, @value);
-- to end while loop
SET @myArrayOfUsers= '';
END IF;
IF LENGTH(@myArrayOfUsers) > 0 AND LOCATE(',', @myArrayOfUsers) = 0 then
-- Last entry was withóut comma
INSERT INTO `group_member` VALUES(1001, @myArrayOfUsers);
END IF;
END WHILE;
END$$
DELIMITER ;
我测试你也可以看到结尾没有逗号的情况。
因为你只想做!NF,我不检查已经存在的条目
添加回答
举报