안녕 하세요
오라클8i 와 델파이5로 프로그램을 하고 있습니다.
메인폼에 DataBase 가져다 놓고 설정하구
그리고 다른 폼에서 Query로 Insert, Update, delete 작업을 합니다.
잘 되었읍니다.
어느 순간
//트랜잭션 시작
main.DBAmedia.startTransaction;
try
with Query1 do begin
close;
sql.clear;
sql.add('Update JGPDB Set');
sql.add('t_wjmt = :p_wjmt, t_vat = :p_vat, t_kubn = :p_kubn');
sql.add('where t_bmyy = :p_bmyy and t_srno = :p_srno and t_oyno = :p_oyno');
sql.add(' and t_year = :p_year and t_mnth = :p_mnth and t_wjcd = :p_wjcd');
ParamByName('p_bmyy').asstring := mbmyy.text;
ParamByName('p_srno').asstring := msrno.text;
ParamByName('p_oyno').asstring := moyno.text;
ParamByName('p_year').asstring := myear.text;
ParamByName('p_mnth').asstring := mmnth.text;
ParamByName('p_wjcd').asstring := mwjcd.text;
ParamByName('p_wjmt').asfloat := mamnt.Value;
ParamByName('p_vat').asfloat := mamnt.Value * 0.1;
ParamByName('p_kubn').asstring := mkubn.text;
Execsql;
end;
main.DBAmedia.commit;
Except
begin
main.DBAmedia.rollback;
showmessage(수정실패.!');
Exit;
end;
end;
위 구문에서 Execsql을 만나면 커서는 모래시계로 변하며 꿈쩍을 않함니다.
음 죽은거죠.
Lock이 걸린것 같은데 SQL+ Plus 에서 RollBack 또는 Commit을 한다음
프로그램을 실행하문 또다시 위구문 Execsql에서 죽습니다. 모래시계 못봐서 환장
했는지 모래시계만 보입니다.
책을 보아도 어려운 말들만 써있고 왜 락이걸리는지 또는 락이 아니라면 저 무시무시
한 모래시계는 뭔지 저런경우 어떻게 하면 풀리는지(오라클을 강제로 내리고 다시
올리면 되리라고 생각은 합니다만...)오라클 고수,델파이 고수여러분 땀이 흐르고
있습니다. 저거 해결 못하문 날밤 새야 하는데 새는것보다 못풀까봐....
쿼리를 explore에서 돌려도 그런현상인지요..
프로그램상에서 말구요..
엄성철 wrote:
> 안녕 하세요
> 오라클8i 와 델파이5로 프로그램을 하고 있습니다.
> 메인폼에 DataBase 가져다 놓고 설정하구
> 그리고 다른 폼에서 Query로 Insert, Update, delete 작업을 합니다.
> 잘 되었읍니다.
> 어느 순간
>
> //트랜잭션 시작
> main.DBAmedia.startTransaction;
> try
> with Query1 do begin
> close;
> sql.clear;
> sql.add('Update JGPDB Set');
> sql.add('t_wjmt = :p_wjmt, t_vat = :p_vat, t_kubn = :p_kubn');
> sql.add('where t_bmyy = :p_bmyy and t_srno = :p_srno and t_oyno = :p_oyno');
> sql.add(' and t_year = :p_year and t_mnth = :p_mnth and t_wjcd = :p_wjcd');
> ParamByName('p_bmyy').asstring := mbmyy.text;
> ParamByName('p_srno').asstring := msrno.text;
> ParamByName('p_oyno').asstring := moyno.text;
> ParamByName('p_year').asstring := myear.text;
> ParamByName('p_mnth').asstring := mmnth.text;
> ParamByName('p_wjcd').asstring := mwjcd.text;
> ParamByName('p_wjmt').asfloat := mamnt.Value;
> ParamByName('p_vat').asfloat := mamnt.Value * 0.1;
> ParamByName('p_kubn').asstring := mkubn.text;
> Execsql;
> end;
> main.DBAmedia.commit;
> Except
> begin
> main.DBAmedia.rollback;
> showmessage(수정실패.!');
> Exit;
> end;
> end;
>
> 위 구문에서 Execsql을 만나면 커서는 모래시계로 변하며 꿈쩍을 않함니다.
> 음 죽은거죠.
> Lock이 걸린것 같은데 SQL+ Plus 에서 RollBack 또는 Commit을 한다음
> 프로그램을 실행하문 또다시 위구문 Execsql에서 죽습니다. 모래시계 못봐서 환장
> 했는지 모래시계만 보입니다.
> 책을 보아도 어려운 말들만 써있고 왜 락이걸리는지 또는 락이 아니라면 저 무시무시
> 한 모래시계는 뭔지 저런경우 어떻게 하면 풀리는지(오라클을 강제로 내리고 다시
> 올리면 되리라고 생각은 합니다만...)오라클 고수,델파이 고수여러분 땀이 흐르고
> 있습니다. 저거 해결 못하문 날밤 새야 하는데 새는것보다 못풀까봐....
>
>