我正在为这个问题疯狂。MySQL光标无法正常工作
下面的存储过程打开一个游标,然后对结果进行迭代以执行一些插入操作。
在游标外部使用(在sql窗口中)时,用于游标的select语句有效。但是在游标中并不是工作,游标在打开时返回NULL!
请注意,此代码位于存储过程中,该存储过程本身是由另一个打开另一个游标的存储过程调用的。不确定这个信息。是有用的。
DECLARE location VARCHAR(255); -- location
DECLARE isLocationDone BOOL DEFAULT FALSE; -- status flag
DECLARE curLocation CURSOR FOR
SELECT `LOCATION` AS loc FROM `mfdtemp`.`opexstk_tmp`
WHERE `client` = in_client AND DATE(`rentdat`) < in_date
ORDER BY loc;
DECLARE
CONTINUE HANDLER FOR SQLSTATE '02000' SET isLocationDone = TRUE;
OPEN curLocation;
label_location_loop: LOOP
FETCH curLocation INTO location;
IF isLocationDone THEN
CLOSE curLocation;
LEAVE label_location_loop;
END IF;
INSERT INTO t01_stock_report_htry (
t01date, t01client, t01desc
)
VALUES (in_date, in_client, CONCAT_WS('', 'Stack ', location)
);
END LOOP;
我想通了。不知道它是否是一个MySQL错误,但它是非常阴险的。 游标不工作,因为我已经声明了一个变量*位置*,并且我的游标正在使用一个也称为*'LOCATION' *的字段。 一旦我重命名光标正在工作的变量。 – Telemat