1
我正在寫我的第一個過程,併發生錯誤。我已將錯誤減少到刪除行,但不確定原因。有人可以在這裏發現問題嗎?它是變量嗎?MySQL過程不編譯 - 用變量刪除時出錯
DROP PROCEDURE IF EXISTS MPT_PROC;
DELIMITER $$
CREATE PROCEDURE MPT_PROC
MODIFIES SQL DATA
BEGIN
#-- DECLARE statements
DECLARE v_user_id INT DEFAULT 0;
DECLARE no_more_rows BOOLEAN;
DECLARE v_loop_cntr INT DEFAULT 0;
DECLARE v_num_rows INT DEFAULT 0;
DECLARE c_userfiles CURSOR
FOR
SELECT distinct f.user_id
FROM MPT_STG_FILEUPLOAD f
WHERE f.status = 'A'; #-- Accepted
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET no_more_rows = TRUE;
OPEN c_userfiles;
#-- Loop through each user_id found as pending
the_loop: LOOP
FETCH c_userfiles INTO v_user_id;
#-- Break out of the loop if
#-- 1) there were no records, or
#-- 2) we've processed them all.
IF no_more_rows THEN
CLOSE c_userfiles;
LEAVE the_loop;
END IF;
DELETE FROM MPT_STG_FILEUPLOAD s
WHERE s.user_id = v_user_id;
COMMIT; #--Commiting the changes for this user
END LOOP the_loop;
END IF;
END
DELIMITER ;
謝謝!我還注意到刪除的別名因某種原因而不被接受...... :) – Leo 2012-07-06 22:09:37
非常好的主意!我現在就這樣做!謝謝。 Leo – Leo 2012-07-06 22:16:32
謝謝Spencer,我不知道如何控制如何在循環中進入下一個值,如果發生異常,你有什麼想法嗎? – Leo 2012-07-06 22:44:24