mysql腳本實現循環插入

  1. 定義存儲過程
DELIMITER $$
--數據庫名稱
USE `zycrm`$$
--刪除舊的存儲過程
DROP PROCEDURE IF EXISTS `u_head`$$
--定義新的存儲過程
CREATE  PROCEDURE `u_head`(IN param_num INTEGER)
BEGIN
    -- 該變量用於標識是否還有數據需遍歷
	DECLARE flag INT DEFAULT 0;
	-- 創建一個變量用來存儲遍歷過程中的值
	DECLARE id BIGINT(40);
	-- 查詢出需要遍歷的數據集合
	DECLARE idList CURSOR FOR (SELECT id FROM ws_shop WHERE id < param_num );
	-- 查詢是否有下一個數據,沒有將標識設爲1,相當於hasNext
	DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag = 1;
	-- 打開遊標
	OPEN idList;
		-- 取值設置到臨時變量中
		FETCH idList INTO id;
		-- 遍歷未結束就一直執行
		WHILE flag != 1 DO
			-- targetSQL //你想要執行的目標功能,這裏可以寫多個SQL
			
			--   注意
			-- 這裏有一個坑,目標語句引用臨時變量,實測發現不需要加@符號,但是搜索到的結果都是例如:@id ,這樣來使用,實測發現無法取到數據
			--   注意
			INSERT INTO ws_shop SET shopName = id;
			-- 定要記得把遊標向後移一位,這個坑我替各位踩過了,不需要再踩了
			FETCH idList INTO id;
		END WHILE;
	CLOSE idList;
    END$$

DELIMITER ;
  1. 調用存儲過程
CALL u_head (10) ;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章