我正在爲這個問題瘋狂。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