insert into masakr.tb_kr_cs_24739_day
(statis_date,
STAFF_ID,
cnt_1st,
cnt_submit,
tc_cnt,
jt_cnt,
hb_cnt,
jt_cnt_no_wf,
hb_cnt_no_wf)
select a.statis_date,
a.STAFF_ID,
cnt_1st,
cnt_submit,
cnt_1st_submit,
jt_cnt,
hb_cnt,
b.call_cnt_no_wf,
b.su_call_back_no_wf
from (select t.statis_date,
t.STAFF_ID,
sum(cnt_1st) cnt_1st,
sum(cnt_submit) cnt_submit,
sum(cnt_1st + cnt_submit) cnt_1st_submit,
sum(jt_cnt) jt_cnt,
sum(hb_cnt) hb_cnt
from masakr.tb_kr_cs_24739_day_mid1 t
group by t.statis_date, t.STAFF_ID) a,
masakr.tb_kr_cs_36371_mid2 b
where nvl(a.STAFF_ID, '1') = nvl(b.staff_id_callback(+), '1')
and a.statis_date = b.statis_date(+);
这是修改后的代码,我只把 nvl(a.STAFF_ID, 1) = nvl(b.staff_id_callback(+), 1
)修改为了 nvl(a.STAFF_ID, '1') = nvl(b.staff_id_callback(+), '1'),
STAFF_ID和staff_id_callback均是varchar2数据类型,
在修改之前每次运行到这段代码的时候,都会报ora03113的错误,修改之后立马就没问题了,
请教各位大神,为什么这种数据类型的不一致会导致ora03113的错误,而且oracle应该可以将
number类型隐式转化为varchar2类型吧,真诚求教
)修改为了 nvl(a.STAFF_ID, '1') = nvl(b.staff_id_callback(+), '1'),
如果两个变量做比较,其中一个是 number ,oracle 就会把另一个转化成 number 来执行,但是如果另一个含非数值的字符,比如字母,就是转换失败。