У меня есть блок pl / sql для вставки данных в таблицу report_2019 на основе созданной таблицы меток времени -dates_2019.
TS_RANGE_BEGIN |TS_RANGE_END
2019-01-01 17:00:00 |2019-01-02 17:00:00
2019-01-02 17:00:00 |2019-01-03 17:00:00
2019-01-03 17:00:00 |2019-01-04 17:00:00
2019-01-04 17:00:00 |2019-01-07 17:00:00
2019-01-07 17:00:00 |2019-01-08 17:00:00
2019-01-08 17:00:00 |2019-01-09 17:00:00
Идея состоит в том, чтобы выбирать и вставлять для каждого запись в date_2019 по одному, чтобы избежать проблем с временным табличным пространством. Не могли бы вы помочь исправить это?
declare
ts_range_begin timestamp;
ts_range_end timestamp;
begin
select ts_range_end into ts_range_end from dates_2019;
select ts_range_begin into ts_range_begin from dates_2019;
FOR i IN (select ts_range_begin,ts_range_end from dates_2019) LOOP
insert into report_2019(start_time,end_time,ab,app_name,status,sub_count,category,last_modified_timestamp)
with T as (
select id,start_time,end_time,ab,app_name,status,trunc(last_modified_timestamp),
row_number() over(partition by id, ab order by p_message_id desc, message_id desc) lastest_status_order_id
,p_message_id
,LAST_MODIFIED_TIMESTAMP,reporting_purpose
from (
select
id,
ab
, app_name,
status
,p.message_id p_message_id
,s.message_id
,s.LAST_MODIFIED_TIMESTAMP, reporting_purpose
from table_a s, table_b d, table_c k, table_d t,
table_e p
where s.LAST_MODIFIED_TIMESTAMP > ts_range_begin
and s.LAST_MODIFIED_TIMESTAMP <= ts_range_end
and .....
) a
)
select * from (
select start_time,end_time,ab, app_name, status, count(*) subtotal,
'Reporting' as v_category,trunc(last_modified_timestamp)
from T where lastest_status_order_id = 1
and LAST_MODIFIED_TIMESTAMP <= ts_range_end
group by start_time,end_time,ab,app_name,status,trunc(last_modified_timestamp))a order by ab, app_name;
--i= i+1;
ts_range_begin := NULL ;
ts_range_end := NULL ;
ts_range_begin := i.ts_range_begin ;
ts_range_end := i.ts_range_end;
end loop;
commit;
end;
[Код ошибки: 6550, SQL Состояние: 65000] ORA-06550: строка 66, столбец 4: PLS-00306: неверное число или типы аргументов в Позвоните на «+»
Спасибо,