zoukankan      html  css  js  c++  java
  • 为行销系统提供EBS表接口

      行销项目开工了,需要从EBS中提取表结构,并实现数据同步。

      同步机制:每次同步时清空行销table的所有数据,然后重新写入。

      日常同步:每周一次,EBS系统负载较小时同步(例如:每天凌晨2点)。

      急需同步:EBS提供功能界面及按钮,点击按钮自动执行同步(少用)。

      可能存在问题:行销系统的数据滞后...

    在提取EBS表结构初,想当然地就直接按文档说明在EBS中狂找对应的字段名称、数据类型...

    类似于:

    代码
    create table ERP_CONTACT
    (
      CONTACT_ID        
    NUMBER(15),
      CUST_ACCT_SITE_ID 
    NUMBER(15not null,
      FIRST_NAME        
    VARCHAR2(150),
      LAST_NAME         
    VARCHAR2(150),
      COUNTRY_CODE      
    VARCHAR2(10),
      AREA_CODE         
    VARCHAR2(10),
      PHONE_NUMBER      
    VARCHAR2(50),
      PHONE_TYPE        
    VARCHAR2(30),
      MAIL_STOP         
    VARCHAR2(60),
      PHONE_STATUS      
    VARCHAR2(30),
      CONTACT_STATUS    
    VARCHAR2(1),
      CREATION_DATE     DATE,
      CREATED_BY        
    NUMBER(15),
      LAST_UPDATE_DATE  DATE,
      LAST_UPDATED_BY   
    NUMBER(15)
    )

    但是之后asheng提醒,这样表结构是搞出来了,但是下一次需要实现同步时候,是不是还是要再整理一遍?

    实在是不想再一次去碰EBS的table,会疯的...

    那么有几件事情要做,首先是找到对应字段的基表(非视图,EBS视图过于庞大),然后找到基表之间的关系,需要注意table的一些必要限制条件。 如:

    create table ERP_CONTACT
    as
    select contact.contact_id,
           addr.cust_acct_site_id,
           contact.first_name,
           contact.last_name,
           phone.country_code,
           phone.area_code,
           phone.phone_number,
           phone.phone_type,
           contact.mail_stop,
           phone.status phone_status
           contact.status contact_status, 
           contact.creation_date,
           contact.created_by,
           contact.last_update_date,
           contact.last_updated_by
      from hz_cust_acct_sites_all addr,
           ar_phones_v phone,
           (select acct_role.cust_account_role_id contact_id,
                   party.person_first_name first_name,
                   party.person_last_name last_name,
                   org_cont.mail_stop,
                   acct_role.status,
                   acct_role.creation_date,
                   acct_role.created_by,
                   acct_role.last_update_date,
                   acct_role.last_updated_by,
                   acct_role.cust_account_id,
                   acct_role.cust_acct_site_id,
                   rel_party.party_id
              from hz_contact_points       cont_point,
                   hz_cust_account_roles   acct_role,
                   hz_parties              party,
                   hz_parties              rel_party,
                   hz_relationships        rel,
                   hz_org_contacts         org_cont,
                   hz_cust_accounts        role_acct,
                   hz_contact_restrictions cont_res,
                   hz_person_language      per_lang
             where acct_role.party_id = rel.party_id
               and acct_role.role_type = 'CONTACT'
               and org_cont.party_relationship_id = rel.relationship_id
               and rel.subject_id = party.party_id
               and rel_party.party_id = rel.party_id
               and cont_point.owner_table_id(+) = rel_party.party_id
               and cont_point.contact_point_type(+) = 'EMAIL'
               and cont_point.primary_flag(+) = 'Y'
               and acct_role.cust_account_id = role_acct.cust_account_id
               and role_acct.party_id = rel.object_id
               and party.party_id = per_lang.party_id(+)
               and per_lang.native_language(+) = 'Y'
               and party.party_id = cont_res.subject_id(+)
               and cont_res.subject_table(+) = 'HZ_PARTIES') contact
     where addr.cust_account_id = contact.cust_account_id(+)
       and addr.cust_acct_site_id = contact.cust_acct_site_id(+)
       and contact.party_id = phone.owner_table_id(+);

    这样做的好处在于,一个是达到建立表结构的目的,数据类型也与EBS同步,另外当需要同步数据时,就只需要执行select语句就取得了所需要的数据。
  • 相关阅读:
    Gitkraken使用教程
    request.getHeader中区分大小写参数
    MySql 中查询列表中添加序号
    解决windows 下mysql 表名自动转成小写的问题
    MYSQL服务无法启动,服务没有任何错误;解决方法
    idea中设置一键生成方法注释和类注释
    Windows10下安装MySQL8.0.21-64
    navicat连接mysql出现2059错误的解决方法
    解决tomca在eclipse中正常启动,在bin下启动闪退问题
    QT线程的结束
  • 原文地址:https://www.cnblogs.com/benio/p/1622410.html
Copyright © 2011-2022 走看看