execute immediate使用问题
declare
v_time_table varchar2(50);
sql_tmp_str varchar2(5000);
begin
v_time_table := 'newgansu.common_operation_it_view'||to_char(sysdate,'mm')||'@gs_wt t';
sql_tmp_str:='insert into common_operation_it_view(STATISTICAL_TIME,REGION_CODE,ACQUISITION_TIME,BIZ_TYPE,CHANNEL,TOTAL_COUNT,FAIL_COUNT)
select to_char(sysdate, ''yyyymmddhh24'')||''0000'' STATISTICAL_TIME,
''62'' REGION_CODE,
''60'' ACQUISITION_TIME,
decode(t.FUNC_CODE, 10306, ''1011'', 10303, ''1013'', 1020502, ''1014'', ''1012'') BIZ_TYPE,
''0101'' CHANNEL,
count(*) TOTAL_COUNT,
count(*) - sum(t.IS_SUCCESS) FAIL_COUNT
from '||v_time_table||'
where t.OPT_TIME>=sysdate - 1 / 24
group by decode(t.FUNC_CODE, 10306, ''1011'', 10303, ''1013'', 1020502, ''1014'', ''1012'')
union
select to_char(sysdate, ''yyyymmddhh24'')||''0000'' STATISTICAL_TIME,
''62'' REGION_CODE,
''60'' ACQUISITION_TIME,
''1011'' BIZ_TYPE,
''0202'' CHANNEL,
0 TOTAL_COUNT,
0 FAIL_COUNT
from dual
union
select to_char(sysdate, ''yyyymmddhh24'')||''0000'' STATISTICAL_TIME,
''62'' REGION_CODE,
''60'' ACQUISITION_TIME,
''1013'' BIZ_TYPE,
''0202'' CHANNEL,
0 TOTAL_COUNT,
0 FAIL_COUNT
from dual
union
select to_char(sysdate, ''yyyymmddhh24'')||''0000'' STATISTICAL_TIME,
''62'' REGION_CODE,
''60'' ACQUISITION_TIME,
''1014"'' BIZ_TYPE,
''0202'' CHANNEL,
0 TOTAL_COUNT,
0 FAIL_COUNT
from dual
union
select to_char(sysdate, ''yyyymmddhh24'')||''0000'' STATISTICAL_TIME,
''62'' REGION_CODE,
''60'' ACQUISITION_TIME,
''1012'' BIZ_TYPE,
''0202'' CHANNEL,
0 TOTAL_COUNT,
0 FAIL_COUNT
from dual';
execute immediate sql_tmp_str;
commit;
end;
报错ora-01861:literal does not match format string
ora-06512:at line 53
急求解决,运用execute immediate的时候变量中的字符串应该用2个单引号,还是别的什么。