MySQL循环游标的使用

BEGIN
    #Routine body goes here..
    -- 定义游标接收参数
    DECLARE tmp1 VARCHAR(100);
    DECLARE tmp2 VARCHAR(200);
    -- 定义结束标志
    DECLARE done INT DEFAULT 0;
    -- 定义游标
    DECLARE companyList CURSOR FOR SELECT name, register_address FROM ads_company_info WHERE flag=0 AND status=0 AND register_address LIKE "%海淀区%" LIMIT 20;
    -- 将结束标志绑定到游标
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
    -- 打开游标
    OPEN companyList;
    -- 开始循环
    myloop : LOOP
    -- 提取游标里的数据放入接收参数
    FETCH companyList INTO tmp1,tmp2;
    -- 声明结束的时候
    IF done=1 THEN
            LEAVE myloop;
        END IF;
        -- 这里做想做的事
        INSERT into test_demo_1013 (name,address) VALUES (tmp1,tmp2); 
    END LOOP;
-- 关闭游标
CLOSE companyList;
UPDATE test_demo_1013 SET flag=1 WHERE flag=0;
END

  

游标概念:
一条sql,对应N条资源,取出资源的接口,就是游标,沿着游标,可以一次取出1行。

原文地址:https://www.cnblogs.com/devin-sl/p/13810234.html