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

  • 相关阅读:
    获取小程序码
    获取目标地与当前地距离
    小程序图片预览
    地图导航
    Jquery无缝滚动
    短信验证
    根据经纬度获取地址
    微信小程序中使用emoji表情
    小程序图片上传
    地球人类的牢笼
  • 原文地址:https://www.cnblogs.com/niceletter/p/10716169.html
Copyright © 2011-2022 走看看