• MySQl 存储过程+游标


    DROP PROCEDURE IF exists pro_Insertflightplan_stat; 
    create procedure pro_Insertflightplan_stat(execdate varchar(10))
    begin

        declare c varchar(10);
        declare s varchar(10);
        declare b int default 0;    /*是否达到记录的末尾控制变量*/
        DECLARE cur_1 CURSOR FOR SELECT distinct t.companyICAO,ScheduleDate from flightplanlibarary_arch t where ScheduleDate = execdate;
        DECLARE CONTINUE HANDLER FOR NOT FOUND SET b = 1;
        OPEN cur_1;    
        FETCH cur_1 INTO c, s; /*获取第一条记录*/
        SET b = 2;
        SELECT execdate;
        while b<>1 do
            SELECT @coumunber:=ttt.count as count,@checkat:=ttt.checkedstate as checkedstate  /*变量赋值*/
            FROM (
        (SELECT  COUNT(*) as count,checkedstate
            from flightplan_today where EXECDATE= execdate and CHECKEDSTATE in ('0','1','2','3') and companyICAO like c  GROUP BY checkedstate )  
            UNION  
            (SELECT COUNT(*) as count,'4' as checkedstate FROM flightplanlibarary_arch WHERE id NOT IN (SELECT n.id FROM flightplan_today m  INNER  JOIN flightplanlibarary n  ON m.flightid=n.flightid AND m.    depap =n.depap AND m.execdate=n.ScheduleDate  AND m.execdate= execdate) and scheduledate= execdate and companyICAO like c )) ttt;
        IF @checkat=0
        THEN  
          insert into flightplan_stat (unifynum,nounifynum,submitnum,nosubmitnum,unconfirm,execdate,userICAO) VALUES(@coumunber,0,0,0,0,s,c);
            ELSEIF @checkat = 1  
                    THEN  
            insert into flightplan_stat (unifynum,nounifynum,submitnum,nosubmitnum,unconfirm,execdate,userICAO) VALUES(0,@coumunber,0,0,0,s,c);
            ELSEIF @checkat = 2
                THEN
            insert into flightplan_stat (unifynum,nounifynum,submitnum,nosubmitnum,unconfirm,execdate,userICAO) VALUES(0,0,@coumunber,0,0,s,c);
            ELSEIF @checkat = 4
                THEN
            insert into flightplan_stat (unifynum,nounifynum,submitnum,nosubmitnum,unconfirm,execdate,userICAO) VALUES(0,0,0,@coumunber,0,s,c);
            ELSEIF @checkat= 3
                THEN
            insert into flightplan_stat (unifynum,nounifynum,submitnum,nosubmitnum,unconfirm,execdate,userICAO) VALUES(0,0,0,0,@coumunber,s,c);
            ELSE  
                         insert into flightplan_stat (unifynum,nounifynum,submitnum,nosubmitnum,unconfirm,execdate,userICAO) VALUES(0,0,0,0,0,s,c);
            END IF;  
     
        FETCH cur_1 INTO c, s; /*取下一条记录*/
        end while;
        close cur_1;       
    end;


    #call pro_Insertflightplan_stat('20150331');

  • 相关阅读:
    飞思卡尔单片机CAN模块的物理特性的示波器观察
    飞思卡尔CAN模块关于ID和mask的使用
    基本数据库语句
    深入分析Spring 与 Spring MVC容器
    Linux常用命令大全
    datagrid行内编辑时为datetimebox
    SVN上拖下来的项目,缺少build path怎么办?
    sql中的in与not in,exists与not exists的区别
    Spring中@Component的作用
    浅谈@RequestMapping @ResponseBody 和 @RequestBody 注解的用法与区别
  • 原文地址:https://www.cnblogs.com/zh1989/p/4381006.html
Copyright © 2020-2023  润新知