Weird results using TOraDataSet
Posted: Tue 28 Jan 2014 23:32
I am new to the forums, as we just purchased a license of this library. It is replacement of another library; and these are remarkably similar in their API.
In doing this replacement, everything has gone very smoothly. I have run into an issue with retrieving data using a query.
Environment is 9.5.2 library. 64 bit executable being built. I create one session per application thread.
Here is the session object.
Connecting has no issues.
I create one query. Each thread is linear. Thread A and B have no need to know anything about what they are doing from a database/query perspective.
Here is the query object (using TOraDataSet).
If I use FQuery.Options.ScrollableCursor := true, Oracle throws an error (ORA-24338: statement handle not executed". If I do not use that .. I get no data returned at all.
What's really weird is that one query appears to work (its a select, with 1 row expected), and another subsequent query (with multiple rows expected) does not.
Is there any guidance to help me get over this problem?
Perhaps taking a different approach, is there a example of using the library 100% non-visually (everything being created dynamically via .Create)??
Thanks, in advance, for your help.
In doing this replacement, everything has gone very smoothly. I have run into an issue with retrieving data using a query.
Environment is 9.5.2 library. 64 bit executable being built. I create one session per application thread.
Here is the session object.
Code: Select all
FConnection := TOraSession.Create(Nil);
FConnection.LoginPrompt := False;
FConnection.ConnectPrompt := False;
FConnection.ThreadSafety := True;
FConnection.Options.StatementCache := False; // I do my own caching
FConnection.HomeName := 'OraDb11g_home1';
FConnection.AutoCommit := False;
I create one query. Each thread is linear. Thread A and B have no need to know anything about what they are doing from a database/query perspective.
Here is the query object (using TOraDataSet).
Code: Select all
FQuery := TOraDataSet.Create(FSession);
FQuery.ParamCheck := False;
FQuery.DisableControls;
FQuery.Session := FSession;
FQuery.ReadOnly := True;
FQuery.Unidirectional := True; // is this a problem?
FQuery.FetchRows := 100;
FQuery.FetchAll := False; // Does this fetch nothing, or fetch only the FetchRows count. It could be the problem, but I cannot FetchALl if it really means all results from the query.
FQuery.AutoCalcFields := False;
What's really weird is that one query appears to work (its a select, with 1 row expected), and another subsequent query (with multiple rows expected) does not.
Is there any guidance to help me get over this problem?
Perhaps taking a different approach, is there a example of using the library 100% non-visually (everything being created dynamically via .Create)??
Thanks, in advance, for your help.