【发布时间】:2012-05-29 02:52:13
【问题描述】:
我什至无法让这个基本的 CURSOR LOOP 在我的 TRANSACTION 中运行。
请帮忙。提前致谢!
CREATE PROCEDURE ClearItems(IN itemName CHAR)
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE bID INT(255);
DECLARE bIDs CURSOR FOR SELECT id FROM table1 WHERE column1 = itemName AND column2 = 'b' ORDER BY column3 DESC, date ASC;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
START TRANSACTION;
OPEN bIDs;
clear_loop: LOOP
FETCH bIDs INTO bID;
IF done THEN
LEAVE clear_loop;
END IF;
INSERT INTO table2 (column1) SELECT bID;
END LOOP;
CLOSE bIDs;
COMMIT;
END //
DELIMITER ;
【问题讨论】:
-
检查语法错误。
-
没有报告。一切都会过去。当你尝试时,你会得到它们吗?
-
这一行会抛出一些错误——'WHERE 1column1 = itemName AND 1column2 = 'b' ORDER BY 1column3 DESC'。
1column1和其他字段必须正确引用或命名。 -
我不明白。列是否引用? itemName 是 IN 过程值。不能用 IN 值在 WHERE 中搜索列吗?或者这样做时语法是否必须改变?非常感谢。
-
我只是在没有 LOOP 的情况下尝试过,它插入了一个空值。使用 WHERE 时是否必须对 CURSOR 使用特殊语法?
标签: mysql loops transactions cursor