PROCEDURE DoManualDataUpload IS
    dtStart    DATE;
    dtEnd      DATE;
    strStatus  VARCHAR2(40);
    strDesc    VARCHAR2(1000);
    strSysSign VARCHAR2(40);
  BEGIN
    strSysSign := 'ITGQRY_MANUAL';    UtilityFunc.setSyssign@appdblink(strSysSign);    BEGIN
      SELECT TRUNC(max(eci.last_fatch_end_date))
        INTO dtStart
        FROM etl_control_info eci
       WHERE eci.sys_sign in ('ITGQRY_MANUAL', 'ITGQRY');      SELECT eci.etl_status
        INTO strStatus
        FROM etl_control_info eci
       WHERE eci.sys_sign = strSysSign;
    EXCEPTION
      WHEN OTHERS THEN
        dtStart := TRUNC(SYSDATE - 1);
    END;    dtEnd := SYSDATE;    IF strStatus <> 'STOP' THEN      strDesc := '*** 已经有一个实例在运行,加载结束 ***';      UtilityFunc.WriteLog@appdblink('DataUpload.DoManualDataUpload',
                                     'M',
                                     'etl_control_info',
                                     'S',
                                     strDesc);
      COMMIT;      RETURN;
    END IF;    UtilityFunc.LogReset@appdblink();
    UtilityFunc.SetLogStatus@appdblink(dtStart, dtEnd, 'RUNNING');    strDesc := 'MIS数据手动加载过程启动,处理日期范围:' ||
               to_char(dtStart, 'YYYY-MM-DD HH24:MI:SS') || ' 至 ' ||
               to_char(dtEnd, 'YYYY-MM-DD HH24:MI:SS');    UtilityFunc.WriteLog@appdblink('DataUpload.DoManualDataUpload',
                                   'M',
                                   'etl_control_info',
                                   'S',
                                   strDesc);    FECHDATA20080122.FetchCommonData(dtStart, dtEnd, 1, false);
    FECHDATA20080122.FetchBalance(dtStart, dtEnd, 1);
    FECHDATA20080122.FetchGLData(dtStart, dtEnd, 1);    PUSHDATA20080131.PushCommonData(dtStart, dtEnd);
    PUSHDATA20080131.PuchBalance(dtStart, dtEnd);
    PUSHDATA20080131.PushGLData(dtStart, dtEnd);    DealData.UpdateSegments;
    DealData.UpdateBalances;
    DealData.UpdateJeHeaders;
    DealData.UpdateJeLines;
    --整理mv数据
    FCM_ITGQRY_PKG.MANUAL_REFRESH_MV_DATA@appdblink(dtStart, dtEnd);    strDesc := '*** MIS手动数据加载过程结束 ***';    UtilityFunc.WriteLog@appdblink('DataUpload.DoManualDataUpload',
                                   'M',
                                   'etl_control_info',
                                   'S',
                                   strDesc);    UtilityFunc.SetLogStatus@appdblink(dtStart, dtEnd, 'STOP');    COMMIT;  EXCEPTION
    WHEN OTHERS THEN
      strDesc := '*** MIS手动数据加载过程以失败结束:' || sqlerrm;      UtilityFunc.WriteLog@appdblink('DataUpload.DoManualDataUpload',
                                     'M',
                                     'etl_control_info',
                                     'S',
                                     strDesc);
      UtilityFunc.SetLogStatus@appdblink(dtStart, dtStart, 'STOP');      DBMS_OUTPUT.put_line(SQLERRM);
      ROLLBACK;  END DoManualDataUpload;BEGIN
  NULL;
END DataUpload;
    大家帮忙看看这个存储过程是什么作用啊。是往数据库中保存数据吗?还是获取数据啊。

解决方案 »

  1.   

    上面是一个Oracle的存储过程,把etl_control_info 表中 eci.last_fatch_end_date 字段的最大值复制到dtStart表中,并把 eci.last_fatch_end_date 表中的 etl_status 字段赋值给strStatus ,不正确时就捕捉异常,如果 strStatus 的值等于 Stop 就一直循环,直到strStatus 的值不等于 Stop 时就提示“*** 已经有一个实例在运行,加载结束 ***”。
    我自己理解的,希望对你有帮助,呵呵......
      

  2.   

    --->大家帮忙看看这个存储过程是什么作用啊。是往数据库中保存数据吗?还是获取数据啊。
    select么!= =
      

  3.   

    搜索关键字,insert, delete, update