오라클 버전은 9i 이고 ,BDE에서 오라클 설정을 했습니다.
(DLL32 = SQLORA8.DLL, VENDOR = OCI.DLL)
그런데, SELECT, INSERT 는 모두 잘 되는데
DELETE만 하면 DB에 제대로 연결이 안되는지 계속 돌다가 프로그램이
멈춥니다. SQL-EXPLORER에서 해봐도 DELETE만 안되는 걸 보면 연결이 안되는 것 같기도 하구요. --;
그리고, 델파이를 다시 시작해야 오라클DB의 변경된 값이 적용이 됩니다.
예를 들어서, 프로그램을 한번 컴파일해서 수행하고 난 뒤에 SQL-PLUS에서 A라는 테이블의 데이타 한건을 삭제했는데 다시 컴파일하면 삭제 전의 건수를 리턴하거든요.
다음은 코드입니다. 답변 좀 해주세요~ ㅜ.ㅜ
with DM_CreateF.Query_Common do
begin
SQL.Clear;
SQL.Add('SELECT TO_CHAR(SYSDATE, ''YYYYMMDD'')CURRDATE FROM DUAL');
Open;
curr_date := FieldByName('CURRDATE').AsString;
end;
with DM_CreateF do
begin
try
Query_J010T.ParamByName('RESIGNDATE').AsString := curr_date;
Query_J010T.Open;
if Query_J010T.isEmpty then
begin
Query_J010T.Close;
end
else
begin
Database_ORA.StartTransaction;
// DELETE
with Query_Common do
begin
SQL.Clear;
SQL.Add('SELECT COUNT(*) FROM DHRU010T');
Open;
showmessage(inttostr(Fields[0].AsInteger));
if Fields[0].AsInteger <> 0 then
begin
SQL.Clear;
SQL.Add('DELETE FROM DHRU010T ');
ExecSQL; //<-- 이 부분에서 프로그램이 멈춥니다.
end;
end;
Query_J010T.First;
while not Query_J010T.EOF do
begin
for i:=0 to Query_J010T.FieldCount-1 do
begin
Query_U010T.Params[i].AsString := Query_J010T.Fields[i].AsString;
end;
Query_U010T.ExecSQL; //insert
Query_J010T.Next;
end;
Database_ORA.Commit;
end; //if-else end
except
Database_ORA.Rollback;
MessageDlg('접속상태 불량으로 종료합니다!', mtWarning, [mbok], 0);
end;
end;
조건없이 지우는것같은데...
데이타건수가 많으면 롤백테이블스테이스가 그만큼커야되는데...^^
즐프하세요..