Q&A

  • Execsql 후에 메모리 해제가 안되는데...
안녕하세요.
오랜만에 한델에 기웃거리는군요..
프로젝트중에 델파이로 먼가 만들어야 하는데
오랜만에 잡아서 그런지 감이 안오는군요..
오라클 에 연속적인 쿼리를 날렸는데...메모리가 증가하고나서는
해제가 전혀 안되네요...
데먼프로그램인데...하루정도만 돌면 OS 가 미칠라 캅니다..
아래 소습니다..

function DeleteAllTable():boolean;
begin
try
    with DM.inQuery do
    begin
        sql.Clear;
        
        sql.Add('delete TB_MOV');
        if Prepared = False then Prepare; <-- 요기서 메모리가 팍증가하고
                                                              해제가 안됩니다.
            Execsql;
        sql.Clear;
        UnPrepare;

        sql.Add('delete TB_TICKETS');
        if Prepared = False then Prepare;
            Execsql;
        sql.Clear;
        UnPrepare;

        sql.Add('delete TB_PRICE_LIST');
        if Prepared = False then Prepare;
            Execsql;
        sql.Clear;
        UnPrepare;

        sql.Add('delete TB_PRICE_GROUP');
        if Prepared = False then Prepare;
            Execsql;
        sql.Clear;
        UnPrepare;

        sql.Add('delete TB_SSN');
        if Prepared = False then Prepare;
            Execsql;
        sql.Clear;
        UnPrepare;

        sql.Add('delete TB_RAT_MASTER');
        if Prepared = False then Prepare;
            Execsql;
        sql.Clear;
        UnPrepare;

        sql.Add('delete TB_SCR_MASTER');
        if Prepared = False then Prepare;
            Execsql;
        UnPrepare;
    end;
    except on  E:EDBEngineError do
        begin
            DM.Database.Rollback;
            DM.inQuery.Close;
        end;
    end;

    DM.inQuery.Close;
    DM.inQuery.Free;

    result := true;
end;

우쨰된건지 모르겠네요..
그럼 수고하세요....
2  COMMENTS
  • Profile
    공성환 2002.03.09 09:37
    답변이 될지는 모르지만...

    왜 커밋명령어는 없나요?
    아니면 DeleteAllTable함수리턴값에따라서 커밋을 날리는지...

    한가지더 궁궁점...
    delete할때 조건없이 전체데이타를 삭제하시는것 같은데...  
    건수가 적나요? 글구 delete from 테이블명 아닌가?
    만약에 건수가 많이있다면 drop후 create하는건 어떨지...

  • Profile
    이주흥 2002.03.09 19:12


    커밋은 없어도 됩니다...
    delete from 이나 delete 나 같습니다..
    그리고 삭제할때 메모리가 많이 먹는게 아니고
    질의준비(prepare)할때 먹고 안놔주는것 같군요..
    테이블을 drop 한다는건 아닌것 같군요...
    아무튼 답변감사합니다.