안녕하세요 델가족 여러분
아래의 구문은 서버의 오라클디비를 읽어서 있으면 내용을 수정하는 구문입니다.
디비의 레코드 숫자가 현재는 약 3000건 정도인데 앞으로 점점 더 커저 10000건
20000건으로 커집니다.
이럴때 아래구문을 커리로 하니 두번 Open하는 결과가 되네요
Table을 사용한다면 Findkey로 찾아서 있으면 그대로 수정할수 있으니까
Table이 훨씬 빠르지 않나요?
질문1. 테이블이 훨씬 빠르지 않을까요?
질문2. 아래구문이 일반적인 수정구문인가요?
혹 다르게 수정하시는 분을 좀 알려주세요...
감사합니다.
===================================================================
with mastdata.SQLcdms do begin
close;
sql.clear;
sql.add('select cd_ysdt From Cdmsdb');
sql.add('where(cd_tpcd = :p_tpcd and cd_year = :p_year and cd_mnth = :p_mnth');
sql.add(' and cd_srno = :p_srno)');
parambyname('p_tpcd').asstring := Q_jjkb2.text;
parambyname('p_year').asstring := Q_year2.text;
parambyname('p_mnth').asstring := Q_mnth2.text;
parambyname('p_srno').asstring := Q_ilno2.text;;
open;
if recordcount > 0 then begin
with SQLcdms2 do begin
close;
sql.clear;
sql.add('Update Cdmsdb Set');
sql.add('cd_ysdt = :p_ysdt');
sql.add('where(cd_tpcd = :p_tpcd and cd_year = :p_year and cd_mnth = :p_mnth');
sql.add(' and cd_srno = :p_srno)');
parambyname('p_tpcd').asstring := Q_jjkb2.text;
parambyname('p_year').asstring := Q_year2.text;
parambyname('p_mnth').asstring := Q_mnth2.text;
parambyname('p_srno').asstring := Q_ilno2.text;;
parambyname('p_ysdt').asstring := ac_mddt.text;
Execsql;
end;
end;
end;
mainform.database1.commit;
Except
begin
mainform.database1.rollback;
showmessage('입력실패.!');
Exit;
end;
end;