Hi,
In first I hope to all an happy new year 2005.
Here is the problem I have with Oracle when I try to
get CLOB fields :
I get only 997 characters from the CLOB.
I have made some test on the dbxoodbc dll and I can't
see anything.
I have made some change to modify the intial values of
the blockchunksize (set to 512 by example)
Here is the log (somme extra traces I've added)
** :( 0) ->:TSqlCursorOdbc.FetchLongData, Params:
BlobChunkSize= "512" aOdbcBindCol.fColSize= "2147483647";
** :( 0) ->:TSqlCursorOdbc.FetchLongData, Params:
avant getdata "fOdbcHostVarType=" 1;
** :( 0) ->:TSqlCursorOdbc.FetchLongData, Params:
BlobChunkSize= "512";
** :( 0) ->:TSqlCursorOdbc.FetchLongData, Params:
OdbcRetcode= "1" CurrentBlobSize= "512"
fColValueSizePtr= "4992" valpart= "0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456";
** :( 0) ->:TSqlCursorOdbc.FetchLongData, Params:
CurrentBlobSize= "512";
** :( 0) ->:TSqlCursorOdbc.FetchLongData, Params:
BlobChunkSize= "512" OdbcRetcode= "1" CurrentBlobSize=
"1024" fColValueSizePtr= "4480" valpart= "6789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 012340123456789 0123456789 0";
** :( 0) ->:TSqlCursorOdbc.FetchLongData, Params:
CurrentBlobSize= "1024";
** :( 0) ->:TSqlCursorOdbc.FetchLongData, Params:
BlobChunkSize= "1024" OdbcRetcode= "1" CurrentBlobSize=
"2048" fColValueSizePtr= "3996" valpart= "";
** :( 0) ->:TSqlCursorOdbc.FetchLongData, Params:
CurrentBlobSize= "2048";
** :( 0) ->:TSqlCursorOdbc.FetchLongData, Params:
BlobChunkSize= "2048" OdbcRetcode= "1" CurrentBlobSize=
"4096" fColValueSizePtr= "3996" valpart= "";
** :( 0) ->:TSqlCursorOdbc.FetchLongData, Params:
CurrentBlobSize= "4096";
** :( 0) ->:TSqlCursorOdbc.FetchLongData, Params:
BlobChunkSize= "4096" OdbcRetcode= "0" CurrentBlobSize=
"8192" fColValueSizePtr= "3996" valpart= "";
** :( 0) ->:TSqlCursorOdbc.FetchLongData, Params:
val=0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 012346789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789 0123456789
0123456789 0123456789 0123456789 0123456789
012340123456789 0123456789 0;
** :( 0) ~-:TSqlCursorOdbc.FetchLongData;
********************************************
As you can see, it takes 512 chars the first time
but the 2nd time it take only about 480 chars, but it
still make sqlgetdata, as SQLGetData returns in the
while loop an SQL_SUCCESS_WITH INFO (lines having
val=.....) but returning an empty string.
More strange. if I don't let the
if BlobChunkSize*2 <= cBlobChunkSizeLimit then
BlobChunkSize := BlobChunkSize * 2;
the loop never finishes
So where is the problem ?
Thierry Nivon