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

  • 相关阅读:
    OleDbCommand 的用法
    递归求阶乘
    C#重写窗体的方法
    HDU 5229 ZCC loves strings 博弈
    HDU 5228 ZCC loves straight flush 暴力
    POJ 1330 Nearest Common Ancestors LCA
    HDU 5234 Happy birthday 01背包
    HDU 5233 Gunner II 离散化
    fast-IO
    HDU 5265 pog loves szh II 二分
  • 原文地址:https://www.cnblogs.com/niceletter/p/10716169.html
Copyright © 2011-2022 走看看