zoukankan      html  css  js  c++  java
  • 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');

  • 相关阅读:
    一步一步学数据结构之(动态申请二维数组)
    运维自动化
    oracle查看登录到oracle服务器的客户端ip
    权限
    windows下使用SQLPLUS制作BAT执行SQL文件
    rsyslog传输type
    C经典实例
    mysql导出数据库数据及表结构
    解决oracle11g无法导出空表问题
    opennebula onenebula
  • 原文地址:https://www.cnblogs.com/zh1989/p/4381006.html
Copyright © 2011-2022 走看看