A라는 테이블에서 데이터를 가공하여 B라는 테이블로 Insert 시키려고 합니다.
//----------------------
query1.close;
query1.sql.add('select * from A');
query1.open;
while not query1.eof do begin
ZZZ := query1.paramByName('aaa').Asstring
query2.close;
query2.sql.add('Insert into B values (....,aaa, ..);
paramByName('aaa').Asstring := ZZZ;
query2.ExecSQL;
query1.next;
end;
//----------------------
원래 테이블 A의 데이터 건수는 40000건 이상입니다.
그런데 위 코드를 통해서 insert 되는 데이터는 32204로 끝납니다.
(테아블 A의 데이터 건수가 32204보다 작으면 무리없이 잘 입력됩니다.)
쿼리의 조회시 32204건이라는 한계가 있는건지 아니면 소스코드가 잘못된건지..
아시는 분 답변부탁드립니다.
롤백 세그먼트 사이즈 때문일겁니다..
롤백 세그먼트에 정의된 크기 이상을 입력하는 경우에 크기를 초과하여 자동으로 롤백됩니다..
create로 새로운 롤백세그먼트를 잡아주시거나
기존 롤백세그먼트를 Alter시키시면 됩니다..
Mr wrote:
> A라는 테이블에서 데이터를 가공하여 B라는 테이블로 Insert 시키려고 합니다.
>
> //----------------------
> query1.close;
> query1.sql.add('select * from A');
> query1.open;
>
> while not query1.eof do begin
> ZZZ := query1.paramByName('aaa').Asstring
>
> query2.close;
> query2.sql.add('Insert into B values (....,aaa, ..);
> paramByName('aaa').Asstring := ZZZ;
>
> query2.ExecSQL;
>
> query1.next;
> end;
> //----------------------
> 원래 테이블 A의 데이터 건수는 40000건 이상입니다.
> 그런데 위 코드를 통해서 insert 되는 데이터는 32204로 끝납니다.
> (테아블 A의 데이터 건수가 32204보다 작으면 무리없이 잘 입력됩니다.)
>
> 쿼리의 조회시 32204건이라는 한계가 있는건지 아니면 소스코드가 잘못된건지..
> 아시는 분 답변부탁드립니다.