oracle – merge实例

MERGE INTO
  TBL_MEMBER TM                                   – 网站会员注册信息表
USING
  (
    SELECT
      SLS_CDE,                                              – 业务员代码对应员工代码
      DPT_CDE,                                              – 机构代码
      SLS_NME     AS NAME,                             – 业务员名称
      SALEGRP_CDE   AS SALEGRPCODE,               – 营销团队代码
      0 || SUBSTR(CTFCT_TYP,-1,2)    AS CTYPE,    – 证件类型
      CTFCT_NO    AS CNO,                             – 证件号码
      C_TEL,                                             – 电话
      SLS_TYP,                                          – 人员分类 合同、个人代理(系统员工) 其他、在职(代理人)
      BGN_TM,                                            — 起始日期
      END_TM,                                            – 终止日期
      C_DEL                                               — 逻辑删除标志 0-无效 1-有效
    FROM
      TBL_CS_SALES                                    – 业务员信息表
  ) TS
ON (
    TM.USER_NAME = TS.SLS_CDE                     – 业务员代码对应员工代码
    AND TM.DEPT_CODE = TS.DPT_CDE               – 机构代码
  )
WHEN MATCHED THEN
    UPDATE
    SET
      TM.NAME = TS.NAME,                              – 业务员名称
      TM.CERTIFICATE_TYPE = TS.CTYPE,       – 证件类型
      TM.CERTIFICATE_NO = TS.CNO,                – 证件号码
      TM.USED_FLAG = TS.C_DEL,
      TM.PASSWORD_MODIFIED_DATE = SYSDATE
WHEN NOT MATCHED THEN
    INSERT
    (
      TM.ID,
      TM.USER_NAME,
      TM.PASSWORD,
      TM.RANDOM_STR,
      TM.DEPT_CODE,
      TM.NAME,                                    — 业务员名称
      TM.CERTIFICATE_TYPE,                      – 证件类型
      TM.CERTIFICATE_NO,                        — 证件号码
      TM.MOBILE_PHONE,
      TM.PASSWORD_MODIFIED_DATE,
      TM.USED_FLAG,                            – 是否可用 0-无效 1-有效
      TM.MEMBER_TYPE,                           – 内部用户类别 0:业务员
      TM.ROLE_TYPE_CODE,                      — 角色类型 2:内部用户
      TM.MEMBER_FLAG                            – 用户标识 99:诉责险
     
    )
    VALUES
    (
      SEQ_TBL_MEMBER_ID.NEXTVAL,
      TS.SLS_CDE,                                 – 业务员代码对应员工代码
      TS.DPT_CDE,                                – 机构代码
      ‘56a5aa0561ddd3b88b924315043cf6fb‘,   — 初始密码
      ‘6Umt‘,                                       — 盐码
      TS.NAME,                                    – 业务员名称
      TS.CTYPE,                                   – 证件类型
      TS.CNO,                                     — 证件号码
      TS.C_TEL,
      SYSDATE,
      TS.C_DEL,
      ‘0‘,
      ‘2‘,
      ‘99‘
    );