Page 1 of 1

Non-Blocking query. UniDac and Oracle

Posted: Sat 18 Jan 2014 04:15
by sbovin
How do I use non-blocking SQL ?

I want to execute a long running query that will display results in a grid.
I want the user to be able to cancel the query by pressing a button.

I also want the user to be able to continue working on the application, such as editing text in a memo, while the query is still running, instead of showing an hourglass and not allowing any input

I am using the latest version of UniDave latest and Oracle database

Re: Non-Blocking query. UniDac and Oracle

Posted: Mon 20 Jan 2014 11:51
by AlexP
Hello,

The NonBlocking mode is supported in ODAC only. To implement this mode in UniDAC, you should create separate threads by yourself (using the standard TThread) to execute such queries and control their execution.

Re: Non-Blocking query. UniDac and Oracle

Posted: Mon 20 Jan 2014 20:19
by andrefm
Hi Alex,

I have ODAC and know this non-blocking feature is very nice and works well, but I was planning changing to UNIDAC to use multiple DB's (Oracle and SQL Server) using one single program code.

I made a question before about this and you wrote:
"For the time being, the NonBlocking mode is implemented in SDAC and ODAC. It means that in UniDAC, you can use the NonBlocking mode when working with SQL Server and Oracle providers."

Even at history I see:
4.1.3: Oracle: Support for the NonBlocking option is added
5.2.5: Oracle: Memory Leak in the NonBlocking mode is fixed

Do you know if Devart have plans adding this non-blocking feature for other DBs? I know about user.voice but even looking at it it doesn't mean that Devart will implement features people are requesting. Unfortunately Devart don't have any roadmap where people can see when features will be implemented or not.

Re: Non-Blocking query. UniDac and Oracle

Posted: Tue 21 Jan 2014 10:20
by AlexP
Hello,

Yes, indeed, this option is already added to UniDAC. It can be set in the following way:

Code: Select all

  UniQuery1.SpecificOptions.Values['Oracle.NonBlocking'] := 'true';
Or in the UniQuery dialog, at the Options tab