zoukankan      html  css  js  c++  java
  • mysql存储过程游标循环装载字符串SQL语句示例

    之前一直在写T-SQL,没有写过mysql 的存储过程,今天用SQLYog写mysql的存储过程,感觉好不习惯...

    没有过多研究 

    貌似变量声明前  不能执行select 之类的操作

    写的一个示例,循环给表中某列增加一个默认值

    自定义错误参照 这个  

    存储过程传参

    Loop循环

    游标存储

    仅此标记..

    后面有机会再研究吧....

    DROP PROCEDURE IF EXISTS temp;
    
    DELIMITER //
    CREATE PROCEDURE temp(
    IN xx INTEGER)
    BEGIN     
        DECLARE done INT DEFAULT FALSE;
        DECLARE tableName VARCHAR(50);
        DECLARE duplicate_key INT DEFAULT 0;
        DECLARE t_index CURSOR FOR (SELECT table_name FROM `information_schema`.`tables` 
        WHERE table_schema='superpark');
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
        SELECT xx;
        OPEN t_index;
        myLoop:LOOP
        FETCH t_index INTO tableName;
        IF done  THEN 
            LEAVE myLoop;
        END IF;    
        BEGIN
            DECLARE EXIT HANDLER FOR 1054 SET duplicate_key=1; -- 这里的错误码根据具体错误码进行捕捉
            SET @Sql = CONCAT("ALTER TABLE ",tableName," ALTER COLUMN is_deleted SET  DEFAULT 0;");
        PREPARE stmt FROM @Sql;
        -- execute stmt;
        END;
        IF duplicate_key=1 THEN
        SELECT  CONCAT(tableName,'不存在列');
        -- continue
        END IF;
        END LOOP myLoop;
        CLOSE t_index; 
        
    END
    //
    DELIMITER ;
    
    CALL temp(254)

     不存在列  1054

  • 相关阅读:
    对象中属性 加锁 用:volatile 关键词修饰 而 不用 synchronized 加锁
    利用URL重写实现参数目录化
    外部联接
    快速获取表的记录数
    SQL SEVER 元年是1900年
    SQL SERVER的浮点数类型及与C#的对应关系
    接口中包含抽象类demo
    接口的实际应用demo
    多态demo2
    抽象类的实际应用demo
  • 原文地址:https://www.cnblogs.com/niceletter/p/10716169.html
Copyright © 2011-2022 走看看