美文网首页
mysql 存储过程案例

mysql 存储过程案例

作者: 境与界 | 来源:发表于2020-04-30 13:59 被阅读0次
    drop PROCEDURE if exists test_20200429;
    
    CREATE  PROCEDURE `test_20200429`()
    begin 
        DECLARE num INT DEFAULT 0;
        declare v_sql_0 varchar(500);
        declare mainId BIGINT;
        declare faren varchar(500);
        
        declare data_list cursor for    SELECT rid FROM TD_ZY_UNITBASICINFO WHERE LEGAL_PERSON = '1' ;
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET num=1;
            open data_list ;
            fetch data_list into mainId;
            while num <> 1 do 
                -- 使用max函数防止N/A,导致无法用null判断;注意字符串 !="1" 是双引号
                    SET v_sql_0 = CONCAT('SELECT MAX(T.LEGAL_PERSON) into @param1 FROM TD_ZY_UNITBASICINFO2 T WHERE T.LEGAL_PERSON !="1" and  T.DECLARE_STATUS =3 and T.MAIN_ID = ',mainId,' ORDER BY    T.DECLARE_DATE DESC LIMIT 1');
                    SET @sql_0 = v_sql_0;
                    -- 预处理需要执行的动态SQL,其中stmt是一个变量
                    PREPARE stmt0 FROM @sql_0;  
                    -- 执行SQL语句
                    EXECUTE stmt0;   
                    -- 释放掉预处理段   
                    DEALLOCATE PREPARE stmt0;     
                    -- @param1赋值给rid
                    SET faren = @param1;
                    
                     -- null 判断的方式
                    if faren is not  null then 
                        UPDATE TD_ZY_UNITBASICINFO set LEGAL_PERSON = faren wHERE rid = mainId;
                 end if;                    
                fetch data_list into mainId;
            end while;
        close data_list;
    end;
    
    call test_20200429();
    
    

    相关文章

      网友评论

          本文标题:mysql 存储过程案例

          本文链接:https://www.haomeiwen.com/subject/sgpzwhtx.html