我已经搜索了类似的帖子,我发现了另一个类似的帖子,我跟踪了我认为是后续的帖子,但我仍然看到了一个问题。
我也一直在筛选MySQL手册,我在这里看到的似乎是正确的。
DELIMITER $$
CREATE DEFINER=`perimUser`@`localhost` PROCEDURE `assignLOBId`()
BEGIN
declare id, done INT default 0;
declare name VarChar(45);
declare lobCursor Cursor for Select idLineOfBusiness as id, name from LineOfBusiness;
declare continue handler for not found set done = 1;
OPEN lobCursor;
my_loop: LOOP
FETCH lobCursor INTO id, name;
IF done = 1 THEN
CLOSE lobCursor;
LEAVE my_loop;
END IF;
insert into test values (id, name);
UPDATE medium set idLOB = id where LOB = name;
UPDATE low set idLOB = id where LOB = name;
End LOOP my_loop;
END我已经运行了用于游标的查询,它确实返回了13行。表medium和low都充满了每个表中大约600行的数据。LOB匹配每个表的LOB列中的值。用于创建业务线中的值的值是从medium和low生成的。
这里的目标是在我将数据归一化为中值和低值时,多次使用此模式。否则,我会走捷径,创建一堆手动更新语句。
发布于 2012-05-11 07:02:32
我不太确定为什么游标不能像预期的那样工作(您没有说test表是否填充了预期的结果?),但在我看来,您的过程只是实现了一个多表UPDATE (所以可能完全可以用下面的代码替换):
UPDATE LineOfBusiness
LEFT JOIN medium ON LineOfBusiness.name = medium.LOB
LEFT JOIN low ON LineOfBusiness.name = low.LOB
SET medium.idLOB = LineOfBusiness.idLineOfBusiness
, low.idLOB = LineOfBusiness.idLineOfBusinesshttps://stackoverflow.com/questions/10391109
复制相似问题