Q&A

  • FireBird 사용간 ZStoreProc사용에 관해 문의 올림니다.
안녕하세요

SP를 통해 Data의 Insert를 진행할려고 합니다.

다음의 코드를 실행하면 문제 없이 실행되는데

프로그램과 fbserver.exe의 메모리가 점점 증가 되는 현상(누수)이 벌어 짐니다.

이문제로 몇일째 방법을 찾고 있는데 딱히 해결책이 보이지 습니다. ㅜㅜ

-----------------
사용 SP
-----------------
<!--CodeS-->
CREATE OR   ALTER PROCEDURE INSERT_RAIN_PERCEIVE (
    S_DATETIME      TIMESTAMP)        /* 측정시간   */
AS
BEGIN
    INSERT INTO RAIN_PERCEIVE_RAW ( RAIN_PERCEIVE_START, RAIN_PERCEIVE_END)
    VALUES ( :S_DATETIME, NULL);
END
<!--CodeE-->
----------------
delphi code
----------------
<!--CodeS-->
procedure TFDataModule.SP_Insert_RainPerceive(DT: TDateTime);
var
  ZSp: TZStoredProc;
  sTmp: String;
begin
  if FDBCon = nil then
  begin
    WriteLog('    Err: SP_Insert_RainPerceive, Connection 객체가 생성되지 않았습니다.');
    Exit;
  end;

  FDBCon.StartTransaction;
  ZSp := TZStoredProc.Create(nil);
  ZSp.Connection := FDBCon;

  try
    ZSp.StoredProcName := 'INSERT_RAIN_PERCEIVE';
    ZSp.Params.Clear;

    ZSp.Params.CreateParam(ftDateTime,  'S_DATETIME', ptInput).Value := Dt;

    try
      ZSp.ExecProc;                  
      ZSp.Active := TRUE;            // 이부분 제거시 insert는 이루어지는데 메모리가 계속 증가됩니다.

      FDBCon.Commit;
    except
      on E: Exception do begin
        sTmp := E.Message;
        WriteLog('    Err: INSERT_RAIN_PERCEIVE' + sTmp);
        FDBCon.Rollback;
      end;
    end;
  finally
    ZSp.Active := FALSE;          //
    ZSp.Destroy;
  end;

end;
<!--CodeE-->
0  COMMENTS