1
所以我有一個名爲open_loop的遊標執行查詢,現在我想循環它,檢查它所保存的值是否存在於數據庫中,如果有的話,我需要更新該條目,如果不是插入它。MySQL存儲過程循環問題
的問題是,我退出循環的方法是等待狀態02000是:Success, but no rows found。不幸的是,如果用戶表中沒有條目,也會發生這種情況,所以循環會被切斷!我怎樣才能使它不觸發該事件,但如果loop_cur用完了條目,或者可能找到退出循環的另一種方式,仍會觸發?
我的代碼是在這裏:
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
OPEN loop_cur;
REPEAT
FETCH loop_cur
INTO user_id, user_info
SELECT Id INTO user_id FROM users WHERE Id = user_id;
IF user_id IS NOT NULL THEN
UPDATE users
SET info = user_info
WHERE Id = user_id;
ELSE
INSERT INTO users (user_info);
END IF;
UNTIL done END REPEAT;
CLOSE loop_cur;
請不,這是簡化了,因爲我真的插入和獲取更多的價值,併爲loop_cur查詢被相當複雜的,所以我不包括,但它確實有效。
最後,我不能使用INSERT對重複密鑰更新,是什麼我檢查是不是一個真正的user_ID的,這是一個不同的專欄中,我使用的user_id爲簡單起見。
我覺得你有種錯誤理解時,我想退出,我以爲你的意思是直到顯示找到,但我認爲我得到了它的要點和實施類似的東西哪些工作。謝謝! –