zoukankan      html  css  js  c++  java
  • 将一个表字段更新到另一个表字段,数据量大使用存储过程不会锁表

    将一个表所需数据查出来存到集合变量中,然后循环游标更新另一张表。

    -- 取值设置到临时变量中
    FETCH ossList INTO oss,cdkey;

    DROP PROCEDURE IF EXISTS staff_zt_test;
    -- 存储过程
    CREATE PROCEDURE staff_zt_test()
    BEGIN
        -- 该变量用于标识是否还有数据需遍历
        DECLARE flag INT DEFAULT 0;
        -- 创建一个变量用来存储遍历过程中的值
        DECLARE oss VARCHAR(64);
        DECLARE cdkey VARCHAR(255);
        -- 查询出需要遍历的数据集合
        DECLARE ossList CURSOR FOR (select a.oss,a.cdkey from account a WHERE a.oss is not null);
        -- 查询是否有下一个数据,没有将标识设为1,相当于hasNext
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag = 1;
        -- 打开游标
        OPEN ossList;
            -- 取值设置到临时变量中
            FETCH ossList INTO oss,cdkey;
            -- 遍历未结束就一直执行
            WHILE flag != 1 DO
                    -- targetSQL //你想要执行的目标功能,这里可以写多个SQL
                    
                    --   注意
                    -- 这里有一个坑,目标语句引用临时变量,实测发现不需要加@符号,但是搜索到的结果都是例如:@id ,这样来使用,实测发现无法取到数据
                    --   注意
                    update created_player cp set cp.oss =oss where cp.account = cdkey;
                    -- 一定要记得把游标向后移一位,这个坑我替各位踩过了,不需要再踩了
                    FETCH ossList INTO oss,cdkey;
                    -- FETCH cdkeyList INTO cdkey;
            END WHILE;
        CLOSE ossList;
    END;
    -- 执行存储过程 call staff_zt_test();
    源码,是痛苦的,又是快乐的,如果没有这痛苦,也就没有了这快乐!
  • 相关阅读:
    JS 跳转
    js 注意问题
    MySql 引擎
    openflashchart 与 FusionCharts 开发中使用
    MySql 字符串连接
    js 颜色选择器
    c#,winform,combobox联动 Virus
    c#,winform,验证输入内容,文本框,长度,errorprovider组件,方便,快捷 Virus
    c#,NHibernate,ASP.NET2.0,Winform Virus
    c#,小发现,关于程序当前目录的问题,Environment.CurrentDirectory,Application.StartupPath; Virus
  • 原文地址:https://www.cnblogs.com/erlongxizhu-03/p/14417249.html
Copyright © 2011-2022 走看看