1、执行语句如下:
v_sql :='select coalesce(datetime,''''zwbnull''''),
coalesce(seqno,''''zwbnull''''),
coalesce(interface_name,''''zwbnull''''),
coalesce(soure_from,''''zwbnull''''),
coalesce(req_time,''''zwbnull''''),
coalesce(rsp_time,''''zwbnull''''),
coalesce(cost_time,''''zwbnull''''),
coalesce(v_interface_result,''''zwbnull''''),
coalesce(Cbip_Id,''''zwbnull'''')
from (select substr(tp.data, 1, instr(tp.data,''''|'''', 1, 1) - 1) datetime,
substr(tp.data,
instr(tp.data,''''|'''', 1, 1) + 1,
instr(tp.data,''''|'''', 1, 2) -
instr(tp.data,''''|'''', 1, 1) - 1) seqno,
substr(tp.data,
instr(tp.data,''''|'''', 1, 4) + 1,
instr(tp.data,''''|'''', 1, 5) -
instr(tp.data,''''|'''', 1, 4) - 1) interface_name,
substr(tp.data,
instr(tp.data,''''|'''', 1, 6) + 1,
instr(tp.data,''''|'''', 1, 7) -
instr(tp.data,''''|'''', 1, 6) - 1) soure_from,
substr(tp.data,
instr(tp.data,''''|'''', 1, 7) + 1,
instr(tp.data,''''|'''', 1, 8) -
instr(tp.data,''''|'''', 1, 7) - 1) req_time,
substr(tp.data,
instr(tp.data,''''|'''', 1, 8) + 1,
instr(tp.data,''''|'''', 1, 9) -
instr(tp.data,''''|'''', 1, 8) - 1) rsp_time,
substr(tp.data,
instr(tp.data,''''|'''', 1, 9) + 1,
instr(tp.data,''''|'''', 1, 10) -
instr(tp.data,''''|'''', 1, 9) - 1) cost_time,
substr(tp.data,
instr(tp.data,''''|'''', 1, 10) + 1,
instr(tp.data,''''|'''', 1, 11) -
instr(tp.data,''''|'''', 1, 10) - 1) interface_result,
tp.cbip_id Cbip_Id
from t_zwb_cbip_northTraceSmry_tp tp
where regexp_like(substr(tp.data,
instr(tp.data,''''|'''', 1, 9) + 1,
instr(tp.data,''''|'''', 1, 10) -
instr(tp.data,''''|'''', 1, 9) - 1),
''''^ [ [ :digit :] ] +.{0,1} [ [ :digit :] ] * $'''')
and lengthb(substr(tp.data,
instr(tp.data,''''|'''', 1, 9) + 1,
instr(tp.data,''''|'''', 1, 10) -
instr(tp.data,''''|'''', 1, 9) - 1)) < 10
)';
open v_ref_cursor for v_sql ; --打开游标报错 执行时报ora-00907:缺失又括号
2、如果直接执行sql语句没报错:
select substr(tp.data, 1, instr(tp.data, '|', 1, 1) - 1),
substr(tp.data,
instr(tp.data, '|', 1, 1) + 1,
instr(tp.data, '|', 1, 2) - instr(tp.data, '|', 1, 1) - 1),
substr(tp.data,
instr(tp.data, '|', 1, 4) + 1,
instr(tp.data, '|', 1, 5) - instr(tp.data, '|', 1, 4) - 1),
substr(tp.data,
instr(tp.data, '|', 1, 6) + 1,
instr(tp.data, '|', 1, 7) - instr(tp.data, '|', 1, 6) - 1),
substr(tp.data,
instr(tp.data, '|', 1, 7) + 1,
instr(tp.data, '|', 1, 8) - instr(tp.data, '|', 1, 7) - 1),
substr(tp.data,
instr(tp.data, '|', 1, 8) + 1,
instr(tp.data, '|', 1, 9) - instr(tp.data, '|', 1, 8) - 1),
substr(tp.data,
instr(tp.data, '|', 1, 9) + 1,
instr(tp.data, '|', 1, 10) - instr(tp.data, '|', 1, 9) - 1),
substr(tp.data,
instr(tp.data, '|', 1, 10) + 1,
instr(tp.data, '|', 1, 11) - instr(tp.data, '|', 1, 10) - 1),
tp.cbip_id
from t_zwb_cbip_northTraceSmry_tp tp
where
regexp_like( substr(tp.data,
instr(tp.data, '|', 1, 9) + 1,
instr(tp.data, '|', 1, 10) - instr(tp.data, '|', 1, 9) - 1),'^[[:digit:]]+.{0,1}[[:digit:]]*$') --costime过滤掉非数值
and
lengthb(
substr(tp.data,
instr(tp.data, '|', 1, 9) + 1,
instr(tp.data, '|', 1, 10) - instr(tp.data, '|', 1, 9) - 1) ) < 10