mORMot and Open Source friends
Check-in [0626dd1111]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:small fix to the latest fix :)
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 0626dd11118950808ccbeccb3d5be20d798b1df4
User & Date: abouchez 2013-12-03 19:53:55
Context
2013-12-03
21:53
updated notes about older versions of Zeos -> you should better upgrade to latest 7.2 revision as soon as it is stabilized and published! :) check-in: 807863edf4 user: User tags: trunk
19:53
small fix to the latest fix :) check-in: 0626dd1111 user: abouchez tags: trunk
19:46
potential fix of Oracle cursor retrieval, thanks to jvillasantegomez feedback check-in: a509f1da80 user: abouchez tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to SynDBOracle.pas.

2163
2164
2165
2166
2167
2168
2169


2170
2171
2172
2173
2174
2175
2176
2177
....
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
....
2939
2940
2941
2942
2943
2944
2945


2946
2947
2948
2949
2950
2951
2952
  fTimeElapsed.ProfileCurrentMethod;
  {$endif}
  fStatement := aStatement;
  try
    fExpectResults := true;
    SetColumnsForPreparedStatement;
    FetchRows;


    fCurrentRow := 0; // mark cursor on the first row
  except
    on E: Exception do begin
      SynDBLog.Add.Log(sllError,E);
      fStatement := nil; // do not release the statement in constructor
      FreeHandles;
      raise;
    end;
................................................................................
  fRowFetched := 0;
  status := OCI.StmtFetch(fStatement,fError,fRowCount,OCI_FETCH_NEXT,OCI_DEFAULT);
  case Status of
  OCI_SUCCESS:
    fRowFetched := fRowCount; // all rows successfully retrieved
  OCI_NO_DATA: begin
    OCI.AttrGet(fStatement,OCI_HTYPE_STMT,@fRowFetched,nil,OCI_ATTR_ROWS_FETCHED,fError);
    if fRowFetched=0 then
      exit; // no more row available -> return false and fCurrentRow=-1
    fRowFetchedEnded := true;
  end;
  else
    OCI.Check(Status,fError); // will raise error
  end;
  fRowFetchedCurrent := 0;
end;
................................................................................
        if fRowFetchedEnded then
          exit; // no more data
        {$ifndef DELPHI5OROLDER}
        fTimeElapsed.Resume;
        try
        {$endif}
          FetchRows;


        {$ifndef DELPHI5OROLDER}
        finally
          fTimeElapsed.Pause;
        end;
        {$endif}
      end;
    end;






>
>
|







 







<
<







 







>
>







2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
....
2186
2187
2188
2189
2190
2191
2192


2193
2194
2195
2196
2197
2198
2199
....
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
  fTimeElapsed.ProfileCurrentMethod;
  {$endif}
  fStatement := aStatement;
  try
    fExpectResults := true;
    SetColumnsForPreparedStatement;
    FetchRows;
    if fRowFetched=0 then
      fCurrentRow := -1 else // no data row available
      fCurrentRow := 0; // mark cursor on the first row
  except
    on E: Exception do begin
      SynDBLog.Add.Log(sllError,E);
      fStatement := nil; // do not release the statement in constructor
      FreeHandles;
      raise;
    end;
................................................................................
  fRowFetched := 0;
  status := OCI.StmtFetch(fStatement,fError,fRowCount,OCI_FETCH_NEXT,OCI_DEFAULT);
  case Status of
  OCI_SUCCESS:
    fRowFetched := fRowCount; // all rows successfully retrieved
  OCI_NO_DATA: begin
    OCI.AttrGet(fStatement,OCI_HTYPE_STMT,@fRowFetched,nil,OCI_ATTR_ROWS_FETCHED,fError);


    fRowFetchedEnded := true;
  end;
  else
    OCI.Check(Status,fError); // will raise error
  end;
  fRowFetchedCurrent := 0;
end;
................................................................................
        if fRowFetchedEnded then
          exit; // no more data
        {$ifndef DELPHI5OROLDER}
        fTimeElapsed.Resume;
        try
        {$endif}
          FetchRows;
          if fRowFetched=0 then
            exit; // no more row available -> return false + fCurrentRow=-1
        {$ifndef DELPHI5OROLDER}
        finally
          fTimeElapsed.Pause;
        end;
        {$endif}
      end;
    end;