mORMot and Open Source friends
Check-in [5cceb081ac]
Not logged in

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

Overview
Comment:fixed ticket [e9cab7cd97] about OCI_SUCCESS_WITH_INFO not returning any data - thanks mpv for the patch!
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 5cceb081ac484a49b1c83a924e2c3747f92f64a1
User & Date: User 2014-07-31 20:09:42
Context
2014-08-01
17:51
continuing interface-based services client code generation for implementing [09ae8513eb], [168eb753e5] and [d7e5521da5] check-in: d6e2acd141 user: User tags: trunk
2014-07-31
20:09
fixed ticket [e9cab7cd97] about OCI_SUCCESS_WITH_INFO not returning any data - thanks mpv for the patch! check-in: 5cceb081ac user: User tags: trunk
19:58
huge enhancements for Delphi and SmartMobileStudio client code generation - see feature requests [09ae8513eb], [168eb753e5] and [d7e5521da5] check-in: d1d5435a5a user: User tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to SynDBOracle.pas.

26
27
28
29
30
31
32

33
34
35
36
37
38
39
...
114
115
116
117
118
119
120

121
122
123
124
125
126
127
....
1321
1322
1323
1324
1325
1326
1327

1328
1329
1330
1331
1332
1333
1334
1335
....
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577



2578
2579
2580
2581
2582
2583
2584
  The Initial Developer of the Original Code is Arnaud Bouchez.

  Portions created by the Initial Developer are Copyright (C) 2014
  the Initial Developer. All Rights Reserved.

  Contributor(s):
  - richard6688

  
  Alternatively, the contents of this file may be used under the terms of
  either the GNU General Public License Version 2 or later (the "GPL"), or
  the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  in which case the provisions of the GPL or the LGPL are applicable instead
  of those above. If you wish to allow use of your version of this file only
  under the terms of either the GPL or the LGPL, and not to allow others to
................................................................................
  - when a column charset does not match the connection value, log a warning and
    force connection-level code page instead of raising an Exception
  - fixed ticket [4c68975022] about broken SQL statement when logging active
  - fixed ticket [545fbe7579] about TSQLDBConnection.LastErrorMessage not reset
  - fixed ticket [5df9d39858] about NULL bindings in TSQLDBOracleStatement
  - fixed ticket [aff1352239] to identify 9999-12-31 dates as valid
  - fixed ticket [73aec05724] about potential BLOB/CURSOR resource leaks

  - fixed truncated error message in TSQLDBOracleLib.HandleError() method
  - allow to return NULL columns (ex. "SELECT one, two, NULL AS three FROM table")
  - fix potential ORA-24333 error when using stored procedures
  - strip error text constants to decrease the generated .exe size by about 16KB
  - create environment with OCI_EVENTS + OCI_THREADED for ticket [7f23c8d8d4],
    and adding TSQLDBOracleConnectionProperties.EnvironmentInitializationMode
  - added TSQLDBOracleConnectionProperties.RowsPrefetchSize property
................................................................................
      ErrorGet(ErrorHandle,1,nil,ErrNum,tmp,sizeof(tmp),OCI_HTYPE_ERROR);
      L := SynCommons.StrLen(@tmp);
      while (L>0) and (tmp[L-1]<' ') do begin
        tmp[L-1] := #0; // trim right #10
        dec(L);
      end;
      if (Status=OCI_SUCCESS_WITH_INFO) and not InfoRaiseException then

        LogLevelNoRaise := sllInfo;
      msg := CurrentAnsiConvert.AnsiBufferToRawUTF8(tmp,L);
    end;
    OCI_NEED_DATA:
      msg := 'OCI_NEED_DATA';
    OCI_NO_DATA:
      msg := 'OCI_NO_DATA';
    OCI_INVALID_HANDLE:
................................................................................
  end;
end;

procedure TSQLDBOracleStatement.FetchTest(Status: integer);
begin
  fRowFetched := 0;
  case Status of
    OCI_SUCCESS:
      if fColumnCount<>0 then
        fRowFetched := fRowCount;



    OCI_NO_DATA: begin
      assert(fColumnCount<>0);
      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;






>







 







>







 







>
|







 







|


>
>
>







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
...
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
....
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
....
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
  The Initial Developer of the Original Code is Arnaud Bouchez.

  Portions created by the Initial Developer are Copyright (C) 2014
  the Initial Developer. All Rights Reserved.

  Contributor(s):
  - richard6688
  - mpv
  
  Alternatively, the contents of this file may be used under the terms of
  either the GNU General Public License Version 2 or later (the "GPL"), or
  the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  in which case the provisions of the GPL or the LGPL are applicable instead
  of those above. If you wish to allow use of your version of this file only
  under the terms of either the GPL or the LGPL, and not to allow others to
................................................................................
  - when a column charset does not match the connection value, log a warning and
    force connection-level code page instead of raising an Exception
  - fixed ticket [4c68975022] about broken SQL statement when logging active
  - fixed ticket [545fbe7579] about TSQLDBConnection.LastErrorMessage not reset
  - fixed ticket [5df9d39858] about NULL bindings in TSQLDBOracleStatement
  - fixed ticket [aff1352239] to identify 9999-12-31 dates as valid
  - fixed ticket [73aec05724] about potential BLOB/CURSOR resource leaks
  - fixed ticket [e9cab7cd97] about OCI_SUCCESS_WITH_INFO not returning any data
  - fixed truncated error message in TSQLDBOracleLib.HandleError() method
  - allow to return NULL columns (ex. "SELECT one, two, NULL AS three FROM table")
  - fix potential ORA-24333 error when using stored procedures
  - strip error text constants to decrease the generated .exe size by about 16KB
  - create environment with OCI_EVENTS + OCI_THREADED for ticket [7f23c8d8d4],
    and adding TSQLDBOracleConnectionProperties.EnvironmentInitializationMode
  - added TSQLDBOracleConnectionProperties.RowsPrefetchSize property
................................................................................
      ErrorGet(ErrorHandle,1,nil,ErrNum,tmp,sizeof(tmp),OCI_HTYPE_ERROR);
      L := SynCommons.StrLen(@tmp);
      while (L>0) and (tmp[L-1]<' ') do begin
        tmp[L-1] := #0; // trim right #10
        dec(L);
      end;
      if (Status=OCI_SUCCESS_WITH_INFO) and not InfoRaiseException then
        if LogLevelNoRaise=sllNone then // may be e.g. sllWarning 
          LogLevelNoRaise := sllInfo;
      msg := CurrentAnsiConvert.AnsiBufferToRawUTF8(tmp,L);
    end;
    OCI_NEED_DATA:
      msg := 'OCI_NEED_DATA';
    OCI_NO_DATA:
      msg := 'OCI_NO_DATA';
    OCI_INVALID_HANDLE:
................................................................................
  end;
end;

procedure TSQLDBOracleStatement.FetchTest(Status: integer);
begin
  fRowFetched := 0;
  case Status of
    OCI_SUCCESS, OCI_SUCCESS_WITH_INFO: begin
      if fColumnCount<>0 then
        fRowFetched := fRowCount;
      if Status = OCI_SUCCESS_WITH_INFO then
        OCI.Check(Status,fError,false,sllWarning);
    end;
    OCI_NO_DATA: begin
      assert(fColumnCount<>0);
      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;