2014-05-09 3 views
0

테이블에 많은 수의 데이터 세트를 삽입해야하고 프로 시저를 사용하고 싶습니다. 그래서 for 루프를 사용하고 각 루프를 삽입하고 싶습니다. 하지만 1 초 각 루프를 감소가있는 "TO_TIMESTAMP ('18 .04.14 12시 0분 0초 ')를 삽입해야타임 스탬프를 변경하여 PL/SQL 프로 시저 생성하기

을 삽입은 다음과 같습니다.

insert into sv_value(value, timestamp) 
values (40, to_timestamp('18.04.14 12:00:00')) 

어떻게해야

답변

1

쉽게 번호를 사용하여 타임 스탬프 시간을 뺄 수 있습니다. 하나는 하루, 1/24 ... 절차는 다음과 같다? 또는 100 개 미오 데이터 세트? 사전에

감사를 삽입하는 또 다른 방법이있다 1 시간 정도입니다.

procedure insert_data 
is 
    l_timestamp timestamp; 
begin 
    l_timestamp := to_timestamp('18.04.14 12:00:00'); 
    for ... loop 
    insert into sv_value(value, timestamp) 
     values (40, l_timestamp); 
    l_timestamp := l_timestamp - 1/24/60/60; 
    end; 
end; 

그러나 PL/SQL 루프는 100mio 행에 대해 영원히 소요됩니다. 작은 수의 데이터를 만들고 여러 번 복제하는 것이 좋습니다. 중복은 다음과 같이 보일 수 있습니다.

insert into sv_value(value, timestamp) 
select value, timestamp - 5000/24/60/60 
from sv_value; 

데이터를 복제하는 것이 아닙니다. 타임 스탬프에도 오프셋을 추가합니다. 오프셋을 신중하게 선택하면 모든 고유 한 행이 생성됩니다.