Проблема во вставке с использованием даты с таблицей отметок времени - Oracle - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть блок 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: неверное число или типы аргументов в Позвоните на «+»

Спасибо,

...