`
xieen
  • 浏览: 40307 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

同步数据package

 
阅读更多
create or replace package body PKG_Import_ITEM_INSTANCE is
  -- Created : 9/16/2011 2:09:59 PM
  -- Purpose :

  --DBLINK_NAME      
  V_DBLINK_NAME VARCHAR2(40) := '@JF_8004';
  V_SQL         VARCHAR2(5000) := '';
  V_ID          VARCHAR2(40);
  V_MSG         VARCHAR2(5000) := '';
 
  --记录 CUX_SCADA_JOBLOG 表
  procedure RecordJobResult(
                        p_JobID IN VARCHAR2,
                         p_StartDateTime IN DATE,
                           p_EndDateTime IN DATE,
                          p_ProcessCount IN NUMBER,
                                p_Result IN VARCHAR2,
                              p_ErrorMsg IN NVARCHAR2,
                              V_Username in varchar2) is
              v_UsedSeconds NUMBER;
       begin
           v_UsedSeconds := (p_EndDateTime - p_StartDateTime) * 24 * 60 * 60;

           INSERT INTO CUX_SCADA_JOBLOG(SERIAL,jobid,startdatetime,enddatetime,usedtime,processcount,result,errormsg,Username)
           VALUES(SYS_GUID(),p_JobID,p_StartDateTime,p_EndDateTime,v_UsedSeconds,p_ProcessCount,p_Result,p_ErrorMsg,V_Username);
       commit;
       return;
       exception
       when others then
       V_MSG  :=  substrb(sqlerrm,1,4000);
           return;

      end RecordJobResult;
 
  PROCEDURE ImportINSTANCE is
 
    V_INSTANCE_NUMBER            VARCHAR2(30); -- not null
    V_ITEM_NUMBER                VARCHAR2(40);
    V_ITEM_DESCRIPTION           VARCHAR2(240);
    V_ITEM_CATEGORY              VARCHAR2(240);
    V_QUANTITY                   NUMBER; --not null
    V_UNIT_OF_MEASURE            VARCHAR2(3); --not null
    V_SERIAL_NUMBER              VARCHAR2(30);
    V_LOT_NUMBER                 VARCHAR2(80);
    V_PROJECT_NUMBER             VARCHAR2(240);
    V_PROJECT_NAME               VARCHAR2(240);
    V_CUSTOMER_NAME              VARCHAR2(360); -- not null
    V_CUSTOMER_ADDRESS           VARCHAR2(240);
    V_BLADE_STALL                VARCHAR2(240);
    V_INSTALL_ANGLE_INIT_VALUE   VARCHAR2(240);
    V_INSTALL_ANGLE_ADJUST_VALUE VARCHAR2(240);
    V_SWIRL_GENERATOR            VARCHAR2(240);
    V_P_INSTANCE_NUMBER          VARCHAR2(30);
    V_P_ITEM_NUMBER              VARCHAR2(40);
    V_P_ITEM_DESCRIPTION         VARCHAR2(240);
    V_P_ITEM_CATEGORY            VARCHAR2(240);
    V_INSTALL_DATE               VARCHAR2(20);
    V_LAST_UPDATE_DATE           VARCHAR2(20); -- not null
    V_P_SERIAL_NUMBER            VARCHAR2(30);
    INSTANCE_Cursor              Sys_Refcursor;
    Update_Time                  VARCHAR2(30);
    B_INSTANCE_NUMBER            VARCHAR2(30);
   
     v_JobID    VARCHAR2(40)  :=  'JOB_ImportINSTANCE';
--     v_StartDateTime  DATE;
     v_StartDateTime  DATE :=sysdate;
     I_ProcessCount   NUMBER  :=  0;
     v_ErrorID  VARCHAR2(4000);
     V_Username varchar2(40)  := 'admin';
    
  begin

      select to_char(sysdate,'yyyy-MM-dd HH24:MI:SS')
      into Update_Time from dual;

    SELECT NVL(MAX(LAST_UPDATE_DATE), '1990-01-01 12:00:00')
      INTO V_LAST_UPDATE_DATE
      FROM cux_scada_item_instance_v;
     
      --测试之用
      --V_LAST_UPDATE_DATE :='2011-09-20 10:20:54';
       
    V_SQL := '';
    V_SQL := V_SQL || ' SELECT
a.INSTANCE_NUMBER,a.ITEM_NUMBER,a.ITEM_DESCRIPTION,a.ITEM_CATEGORY,a.QUANTITY,a.UNIT_OF_MEASURE,a.SERIAL_NUMBER,';
    V_SQL := V_SQL || '
a.LOT_NUMBER,a.PROJECT_NUMBER,a.PROJECT_NAME,a.CUSTOMER_NAME,a.CUSTOMER_ADDRESS,a.BLADE_STALL,a.INSTALL_ANGLE_INIT_VALUE,';
    V_SQL := V_SQL || '
a.INSTALL_ANGLE_ADJUST_VALUE,a.SWIRL_GENERATOR,a.P_INSTANCE_NUMBER,a.P_ITEM_NUMBER,a.P_ITEM_DESCRIPTION,';
    V_SQL := V_SQL || ' a.P_ITEM_CATEGORY,a.INSTALL_DATE,a.LAST_UPDATE_DATE,a.P_SERIAL_NUMBER,';
    V_SQL := V_SQL || ' NVL(b.INSTANCE_NUMBER,'' '') AS BINSTANCE_NUMBER';
    V_SQL := V_SQL || ' FROM (';
    V_SQL := V_SQL || ' SELECT *';
    V_SQL := V_SQL || ' from cux_scada_item_instance_v' || V_DBLINK_NAME;
    V_SQL := V_SQL || ' WHERE  to_char(LAST_UPDATE_DATE,''yyyy-MM-dd HH24:MI:SS'')>'''||V_LAST_UPDATE_DATE ||''') a';
    V_SQL := V_SQL || ' LEFT JOIN cux_scada_item_instance_v b';
    V_SQL := V_SQL || ' ON a.INSTANCE_NUMBER=b.INSTANCE_NUMBER';
 
    open INSTANCE_Cursor for V_SQL;
    loop
      fetch INSTANCE_Cursor
        into V_INSTANCE_NUMBER, V_ITEM_NUMBER, V_ITEM_DESCRIPTION, V_ITEM_CATEGORY, V_QUANTITY,
             V_UNIT_OF_MEASURE, V_SERIAL_NUMBER, V_LOT_NUMBER,V_PROJECT_NUMBER, V_PROJECT_NAME,
             V_CUSTOMER_NAME, V_CUSTOMER_ADDRESS, V_BLADE_STALL, V_INSTALL_ANGLE_INIT_VALUE,
             V_INSTALL_ANGLE_ADJUST_VALUE, V_SWIRL_GENERATOR, V_P_INSTANCE_NUMBER, V_P_ITEM_NUMBER,
             V_P_ITEM_DESCRIPTION, V_P_ITEM_CATEGORY, V_INSTALL_DATE, V_LAST_UPDATE_DATE, V_P_SERIAL_NUMBER,
             B_INSTANCE_NUMBER;            
      exit when INSTANCE_Cursor%notfound;     
    
      if(B_INSTANCE_NUMBER != ' ') then
            UPDATE cux_scada_item_instance_v
                    SET  ITEM_NUMBER = V_ITEM_NUMBER,
                         ITEM_DESCRIPTION = V_ITEM_DESCRIPTION,
                         ITEM_CATEGORY = V_ITEM_CATEGORY,
                         QUANTITY = V_QUANTITY,
                         UNIT_OF_MEASURE = V_UNIT_OF_MEASURE,
                         SERIAL_NUMBER = V_UNIT_OF_MEASURE,
                         LOT_NUMBER = V_UNIT_OF_MEASURE,
                         PROJECT_NUMBER = V_UNIT_OF_MEASURE,
                         PROJECT_NAME = V_PROJECT_NAME,
                         CUSTOMER_NAME = V_CUSTOMER_NAME,
                         CUSTOMER_ADDRESS = V_CUSTOMER_ADDRESS,
                         BLADE_STALL = V_BLADE_STALL,
                         INSTALL_ANGLE_INIT_VALUE = V_INSTALL_ANGLE_INIT_VALUE,
                         INSTALL_ANGLE_ADJUST_VALUE = V_INSTALL_ANGLE_ADJUST_VALUE,
                         SWIRL_GENERATOR = V_SWIRL_GENERATOR,
                         P_INSTANCE_NUMBER = V_P_INSTANCE_NUMBER,
                         P_ITEM_NUMBER = V_P_ITEM_NUMBER,
                         P_ITEM_DESCRIPTION = V_P_ITEM_DESCRIPTION,
                         P_ITEM_CATEGORY = V_P_ITEM_CATEGORY,
                         INSTALL_DATE = V_INSTALL_DATE,
                         LAST_UPDATE_DATE = Update_Time,
                         P_SERIAL_NUMBER = V_P_SERIAL_NUMBER
                 WHERE INSTANCE_NUMBER = B_INSTANCE_NUMBER;       else
            V_ID := SYS_GUID();   
            INSERT INTO cux_scada_item_instance_v
              (ID,
               INSTANCE_NUMBER,
               ITEM_NUMBER,
               ITEM_DESCRIPTION,
               ITEM_CATEGORY,
               QUANTITY,
               UNIT_OF_MEASURE,
               SERIAL_NUMBER,
               LOT_NUMBER,
               PROJECT_NUMBER,
               PROJECT_NAME,
               CUSTOMER_NAME,
               CUSTOMER_ADDRESS,
               BLADE_STALL,
               INSTALL_ANGLE_INIT_VALUE,
               INSTALL_ANGLE_ADJUST_VALUE,
               SWIRL_GENERATOR,
               P_INSTANCE_NUMBER,
               P_ITEM_NUMBER,
               P_ITEM_DESCRIPTION,
               P_ITEM_CATEGORY,
               INSTALL_DATE,
               LAST_UPDATE_DATE,
               P_SERIAL_NUMBER)
             VALUES
              (V_ID,
               V_INSTANCE_NUMBER,
               V_ITEM_NUMBER,
               V_ITEM_DESCRIPTION,
               V_ITEM_CATEGORY,
               V_QUANTITY,
               V_UNIT_OF_MEASURE,
               V_SERIAL_NUMBER,
               V_LOT_NUMBER,
               V_PROJECT_NUMBER,
               V_PROJECT_NAME,
               V_CUSTOMER_NAME,
               V_CUSTOMER_ADDRESS,
               V_BLADE_STALL,
               V_INSTALL_ANGLE_INIT_VALUE,
               V_INSTALL_ANGLE_ADJUST_VALUE,
               V_SWIRL_GENERATOR,
               V_P_INSTANCE_NUMBER,
               V_P_ITEM_NUMBER,
               V_P_ITEM_DESCRIPTION,
               V_P_ITEM_CATEGORY,
               V_INSTALL_DATE,
               Update_Time,
               V_P_SERIAL_NUMBER);         end if;         I_ProcessCount  := I_ProcessCount + 1;
    end loop;    close INSTANCE_Cursor;
    commit;
       
     RecordJobResult(v_JobID,v_StartDateTime,sysdate,I_ProcessCount,'OK','',V_Username);
  exception
    when others then
      v_ErrorID  :=  substrb(sqlerrm,1,4000);
      if INSTANCE_Cursor%isopen then
        close INSTANCE_Cursor;
      end if;      rollback;
      RecordJobResult(v_JobID,v_StartDateTime,sysdate,I_ProcessCount,'FAIL',v_ErrorID,V_Username);
      commit;                                 
   
  end ImportINSTANCE;
end PKG_Import_ITEM_INSTANCE;
分享到:
评论

相关推荐

    SQLServer利用SSIS包定时同步新增数据到其它库

    - **包 (Package)**:SSIS 中的基本执行单元,包含了用于提取、转换和加载数据的所有组件。 - **控制流 (Control Flow)**:包内组件之间的逻辑连接,定义了数据流动的方向。 - **数据流 (Data Flow)**:负责数据转换...

    mysql通过binlog同步数据到redis的方法.docx

    mysql通过binlog同步数据到redis的方法 本文档介绍了使用mysql的binlog机制同步数据到redis的方法。该方法通过模仿mysql的slave角色,从master获取数据库变化的数据,写入activeMQ,再同步到redis,实现数据同步的...

    PA FF 中文协议 package 4

    - **位同步**:确保数据在传输过程中的同步。 10. **帧格式**: 包括固定长度和可变长度的帧,以及包含数据字段、长度、地址、控制和校验信息的结构。 11. **长度、地址、控制和校验八位位组**: - **长度八位...

    package SQL server 2000

    6. **复制技术**:允许数据库的数据和架构在多个服务器间同步,适用于分布式环境和灾难恢复策略。 7. **数据库镜像**:为高可用性提供解决方案,通过镜像主数据库到辅助服务器,确保在主服务器故障时能无缝切换。 ...

    Atom-atom-package-sync,轻松同步atom包和设置.zip

    Atom-atom-package-sync 是一个专为 Atom 文本编辑器设计的插件,它允许用户方便地同步他们的 Atom 包和个性化设置。这个压缩包文件名 "Atom-atom-package-sync.zip" 暗示了它的主要功能是将用户的 Atom 安装配置...

    图解rsync数据同步部署文档

    ### 图解rsync数据同步部署文档关键知识点解析 #### 一、什么是rsync? rsync是一种高效的远程数据同步工具,最初设计用于Unix-like系统环境,但后来也发展出了Windows下的实现,如cwRsync。其核心功能在于能够...

    vue快速入门package.rar

    Vue组件可以封装可重用的代码块,而`v-model`指令用于双向数据绑定,使输入框的值与Vue实例的数据保持同步。 3. **天知道**:这个名字可能指的是一个随机知识问答或者天气查询的应用。Vue可以轻松地处理异步数据,...

    SQLSERVER2000 PACKAGE3

    7. **数据复制功能**:可能优化了复制技术,使得数据同步和分布更加有效。 8. **错误处理和日志记录**:提升了错误报告的准确性和详细程度,帮助管理员更快定位并解决问题。 9. **JDBC驱动增强**:对于Java开发者...

    官方U3软件制作工具_U3 Package Prototyper

    4. 数据同步:工具还支持数据同步功能,使用户能够在多台电脑间无缝切换工作状态,保持数据一致性。 5. 安全管理:U3 Package Prototyper提供了安全机制,防止未经授权的访问和修改,保证U3盘内数据的安全性。 三、...

    LIN_Specification_Package_2.2A.pdf

    - **帧结构**:定义了 LIN 帧的基本组成,包括同步字段、标识符、数据字段等。 - **数据传输**:详细解释了如何在 LIN 网络中发送和接收数据,包括帧的传输顺序和数据的打包方式。 - **时间表**:描述了 LIN 网络...

    Linux安装ElasticSearch与MongoDB分布式集群环境下数据同步

    ### Linux安装ElasticSearch与MongoDB分布式集群环境下数据同步 #### 概述 在现代的大数据处理场景下,为了提高数据处理效率以及更好地利用资源,通常会采用多种数据库技术组合的方式来构建系统架构。Elastic...

    隧道:PG数据同步工具(Java实现)

    PG数据同步工具(Java实现) 隧道是一个将postgresql的实时数据同步到es或kafka的服务 版本支持 Postgresql 9.4或更高版本 Kafka 0.8或更高版本 ElasticSearch 5.x 架构图 原理 tunnel利用pg内部的逻辑复制功能,...

    Microsoft Visual C++ 2008 Redistributable Package

    2. **标准模板库(STL)**:包括容器(如vector、list、map)、算法和迭代器等,是C++编程中常用的数据结构和函数库。 3. **MFC(Microsoft Foundation Classes)**:面向对象的C++类库,用于开发Windows应用程序。 ...

    package背包

    在实际开发中,"背包"系统还可能涉及到其他技术,如序列化(Serialization)来持久化数据,事件驱动(Event-driven)来响应用户操作,甚至可能结合服务器端进行同步,实现多玩家游戏中的物品交换。理解并掌握这些...

    Oracle的增量数据处理方案

    * 同步模式:实时的捕获变化数据并存储到变化表中,发布者与订阅都位于同一数据库中 * 异步模式:以 Oracle 流复制技术为基础,由于流复制比较复杂,本文档不涉及异步模式的 CDC CDC 相关的数据库对象: * 包...

    action-sync-node-meta:将package.json与存储库元数据同步的GitHub Action

    动作同步节点元 将package.json与存储库元数据同步的GitHub Action。 有些值是相同的。 为什么不自动使它们保持同步?输出示例例覆盖文件每当在分支master上推送提交时运行的示例工作流程。 如果它与GitHub存储库...

    LIN Specification Package

    - **帧**:是数据传输的基本单元,包含了同步字段、标识符、数据字段和校验码等部分。 - **数据传输**:通过主节点发起请求,从节点响应的方式进行。 - **时间表**:定义了数据帧发送的时间顺序,确保网络中的...

    package_mysql.tar.gz

    5. **复制改进**:引入了半同步复制(Semi-Synchronous Replication),确保主服务器上的事务在复制到从服务器之前至少被一个从服务器确认,提高了数据一致性。 6. **高可用性与恢复**:支持崩溃安全的二进制日志,...

    SqlServer数据库OGG安装部署及数据初始化.docx

    Oracle GoldenGate 是一款高效的数据复制工具,用于实现不同数据库之间的实时数据同步。在这个场景中,我们关注的是如何在SQL Server数据库环境下安装配置Oracle GoldenGate(OGG),并将数据从SQL Server实时同步到...

    CentOS下用rsync+inotify实现实时同步

    rsync+inotify可以应用于文件服务器、备份系统、数据中心等领域,实现文件之间的实时同步备份,提高数据安全性和可靠性。 CentOS 7下用rsync+inotify实现实时同步可以实现文件之间的实时同步备份,具有高效、可靠、...

Global site tag (gtag.js) - Google Analytics