SQL:

SELECT

/*+ parallel(a,32) */ a.id

          ,a.data_date

          ,a.mobile_num

          ,a.mobile_code

          ,b.prov AS mobile_prov

          ,b.city AS mobile_city

          ,b.mobile_oper

          ,a.psam

          ,a.psam_code

          ,c.detail_type

          ,c.busi_type

          ,c.sum_type

          ,a.trancde

          ,d.trans_name

          ,d.lv4_name

          ,d.lv3_name

          ,d.lv2_name

          ,d.lv1_name

          ,d.lv0_name

          ,a.merno

          ,a.outcdno

          ,a.outcdno_bin

          ,e.card_name AS outcdno_name

          ,e.card_type AS outcdno_type

          ,e.card_type_name AS outcdno_type_name

          ,e.bank_name AS out_bank_name

          ,e.bank_short_name AS out_bank_short_name

          ,a.incdno

          ,a.incdno_bin

          ,f.card_name AS incdno_name

          ,f.card_type AS incdno_type

          ,f.card_type_name AS incdno_type_name

          ,f.bank_name AS in_bank_name

          ,f.bank_short_name AS in_bank_short_name

          ,a.s_no

          ,a.terminal_area

          ,a.terminal_id

          ,a.pro_no

          ,a.n_platform

          ,a.org_id

          ,a.pay_state

          ,a.pay_respn

          ,a.trans_respn

          ,a.de37

          ,a.is_sucess

          ,a.total_am

          ,a.pro_am

          ,a.free_am

FROM edw.dw_fact_trans partition(DW_MONTH_201303) a

LEFT JOIN edm.d_mobile_info b

ON a.mobile_code = b.mobile_code

LEFT JOIN edm.d_psam_card_info c

ON a.psam_code = c.psam_ab_head

LEFT JOIN edm.d_trancde_info d

ON a.trancde = d.trans_code

LEFT JOIN edm.d_cardinfo_apply e

ON a.outcdno_bin = e.card_bin

LEFT JOIN edm.d_cardinfo_apply f

ON a.incdno_bin = f.card_bin      ;

报错信息:

SELECT

*

ERROR at line 1:

ORA-12801: error signaled in parallel query server P003, instance db1:db1 (1)

ORA-01722: invalid number

原因分析:

存在将字符和数字进行比较。

解决: a.mobile_code = to_char(b.mobile_code)