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) ;
公開された51元の記事 ウォン称賛18 ビュー20000 +

おすすめ

転載: blog.csdn.net/m0_37882063/article/details/104042902