Wrong data-size being returned by 'FETCH' (64-bit, DatabaseToolBx)

1 view (last 30 days)
Hi,
I have a GETDATA.m file on my machine which has 32bit Matlab on WinXP. The same file is also run from a server which has 64bit Matlab on WinServer2003.
GETDATA executes a stored procedure and returns the result table. Its normal output is 8000 rows (approx) and 4 cols. The data is alphanumeric.
Problem --> GETDATA behaves erratically when run from the 64bit server. The number of rows returned is random! The same file when run from my local machine around the same time returns the right data.
The 64bit server runs other stored procedures as well and they all return correct data. The problem occurs only in GETDATA.m file! The code looks like:
setdbprefs('DataReturnFormat', 'cellarray');
conn = database(name,login,password);
curs = exec(conn, SQLstoredp_withParameters);
RequiredData = curs.Data; %Wrong number of rows
close(conn)
close(curs)
I have spent hours debugging it but I cannot resolve it. Thanks!

Answers (3)

Titus Edelhofer
Titus Edelhofer on 18 Apr 2012
Hi,
strange indeed. Does curs.Message display anything useful? BTW: I would first close curs, then conn, but that's of course not the problem you see ...
Titus
  2 Comments
Madhuresh
Madhuresh on 18 Apr 2012
Hi Titus --> no it doesn't. I just cannot explain whats going wrong. This situation is like this: My file1 is called and that calls GETDATA to fill a persistent variable in an Intermediatefile. File1,File2,..126 are processed and then GETDATA is called again to fill another persistent variable in the Intermediatefile. Problem occurs with the second call to GETDATA. If you run just File1,..to..File10, problem will still persist. The only way to avoid it is run GETDATA twice initially and then process File1,...File126!
Titus Edelhofer
Titus Edelhofer on 19 Apr 2012
Hi Madhuresh, in this case I have no clue how to diagnose the problem without looking directly onto it, I must admit, I have no further idea. You might contact MathWorks Technical Support, perhaps they can help you diagnose the problem ...

Sign in to comment.


Christophe
Christophe on 18 Jun 2012
Hi,
I have exactly the same issue. 2 same fetch functions are behaving differently between a 64 bit machine and a 32 bit. The 64 beeing the one that doesn't work properly.
  1 Comment
Madhuresh
Madhuresh on 10 May 2013
While I could never resolve this issue, I learned some valuable lessons - such problem occurred with only string type data and not integer. I actually updated all my SQL codes to return the number of rows as the top most row. Matlab now verifies that the top row = remaining_number_of_rows. If not, the code is re-run.

Sign in to comment.


Aubai
Aubai on 19 Apr 2017
Did Anyone get answer for this question??
I am having the same Problem here

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!