为行销系统提供EBS表接口

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

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

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

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

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

 

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

类似于:

ExpandedBlockStart.gif 代码
create   table  ERP_CONTACT
(
  CONTACT_ID        
NUMBER ( 15 ),
  CUST_ACCT_SITE_ID 
NUMBER ( 15 not   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语句就取得了所需要的数据。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值