zoukankan      html  css  js  c++  java
  • MySQL数据库中,使用游标循环遍历

    /*
    对*dt库下的所有数据表删除docuemttype为空和documenttype为MD,PD,ET的数据:
    delete from 表名 where length(documenttype)<2 or documenttype is null or documenttype in ('et','md','pd');
    */
    DELIMITER $$
    USE `数据库名称1`$$
    DROP PROCEDURE IF EXISTS `存储过程名称1`$$
    CREATE PROCEDURE `存储过程名称1`()
    BEGIN
    DECLARE str varchar(40);
    DECLARE Done INT DEFAULT 0;
    DECLARE rs CURSOR FOR SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = '数据库名称1';
    /* 异常处理 */
    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Done = 1;
    /* 打开游标 */
    OPEN rs;
    /* 逐个取出当前记录userId字段的值*/
    FETCH NEXT FROM rs INTO str;
    /* 遍历数据表 */
    REPEAT
    delete from str where length(documenttype)<2 or documenttype is null or documenttype in ('et','md','pd');
    FETCH NEXT FROM rs INTO str;
    UNTIL Done END REPEAT;
    /* 关闭游标 */
    CLOSE rs;
    END$$
    DELIMITER ;

    use 数据库名称1;
    call 存储过程名称1;

    /*
    对*sd库下的所有数据表删除docuemttype不为空的数据
    delete from 表名 where length(documenttype)>1;
    */
    DELIMITER $$
    USE `数据库名称2`$$
    DROP PROCEDURE IF EXISTS `存储过程名称2`$$
    CREATE PROCEDURE `存储过程名称2`()
    BEGIN
    DECLARE str varchar(40);
    DECLARE Done INT DEFAULT 0;
    DECLARE rs CURSOR FOR SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = '数据库名称2';
    /* 异常处理 */
    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Done = 1;
    /* 打开游标 */
    OPEN rs;
    /* 逐个取出当前记录userId字段的值*/
    FETCH NEXT FROM rs INTO str;
    /* 遍历数据表 */
    REPEAT
    delete from str where length(documenttype)>1;
    FETCH NEXT FROM rs INTO str;
    UNTIL Done END REPEAT;
    /* 关闭游标 */
    CLOSE rs;
    END$$
    DELIMITER ;

    use 数据库名称2;
    call 存储过程名称2;

    /*
    对*et库下的所有数据表删除非学位论文数据:
    delete from 表名 where length(doucmenttype)='' or documenttype is null or documenttype not in ('et','md','pd');
    */

    DELIMITER $$
    USE `数据库名称3`$$
    DROP PROCEDURE IF EXISTS `存储过程名称3`$$
    CREATE PROCEDURE `存储过程名称3`()
    BEGIN
    DECLARE str varchar(40);
    DECLARE Done INT DEFAULT 0;
    DECLARE rs CURSOR FOR SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = '数据库名称3';
    /* 异常处理 */
    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Done = 1;
    /* 打开游标 */
    OPEN rs;
    /* 逐个取出当前记录userId字段的值*/
    FETCH NEXT FROM rs INTO str;
    /* 遍历数据表 */
    REPEAT
    delete from str where length(doucmenttype)='' or documenttype is null or documenttype not in ('et','md','pd');
    FETCH NEXT FROM rs INTO str;
    UNTIL Done END REPEAT;
    /* 关闭游标 */
    CLOSE rs;
    END$$
    DELIMITER ;

    use 数据库名称3;
    call 存储过程名称3;

  • 相关阅读:
    Metrics.NET
    DotNet Multithread
    WebApi框架概述
    RESTful API 概述
    MvcPager分页控件以适用Bootstrap效果
    Windows集群网络负载均衡
    学习Oracle日记(10)-数据类型
    在Eclipse中使用Junit4进行单元测试
    Android--学习笔记--02--AndroidStudio的设置
    Android--学习笔记--01--开发软件安装
  • 原文地址:https://www.cnblogs.com/houzhg/p/3728001.html
Copyright © 2011-2022 走看看