SQL "dialect"

Discussion of open issues, suggestions and bugs regarding UniDAC (Universal Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
Guillermo
Posts: 7
Joined: Sun 24 Feb 2008 05:44

SQL "dialect"

Post by Guillermo » Mon 03 Mar 2008 21:30

Hi,

Does TuniQuery will provide a common SQL or do I need to provide SQL specific for Oracle and for SQL Server as for example date arithmetic.

Guillermo Ortega A.

Challenger
Devart Team
Posts: 925
Joined: Thu 17 Nov 2005 10:53

Post by Challenger » Thu 06 Mar 2008 06:53

No, TUniQuery does not currently provide such functionality. Please describe in more details your example.

Guillermo
Posts: 7
Joined: Sun 24 Feb 2008 05:44

SQL "dialect"

Post by Guillermo » Fri 07 Mar 2008 02:12

For example in Oracle:
SELECT ...., DATE_FIELD + num_days < SYSDATE

SQL Server
SELECT ....,DATEADD(day,num_days,DATE_FIELD) < GETDATE()

The question is:
Do I need to provide different SQL Statement depending on the backend? or you will provide a commom SQL.

Thanks.

tnt9062
Posts: 2
Joined: Sun 11 May 2008 15:25

Same problem

Post by tnt9062 » Sun 11 May 2008 15:38

Sometimes i use analytic functions in Oracle. In this case SQL for mySql DB stored separately.
Can TUniQuery store different SQL's?

Challenger
Devart Team
Posts: 925
Joined: Thu 17 Nov 2005 10:53

Post by Challenger » Mon 12 May 2008 09:26

Now UniDAC does not provide such functionality.

tnt9062
Posts: 2
Joined: Sun 11 May 2008 15:25

Post by tnt9062 » Wed 03 Dec 2008 12:29

Hi,
unidac 2.0 have this function ?

burdian
Posts: 29
Joined: Wed 19 Nov 2008 19:25

Post by burdian » Fri 05 Dec 2008 08:25

This can be easy implement with macros:

SELECT ...,
&IF_ORA DATE_FIELD + num_days < SYSDATE &FI_ORA
&IF_SQL SELECT ....,DATEADD(day,num_days,DATE_FIELD) < GETDATE() &FI_SQL

On before open:

case (Query.Connection.ProviderName + ' ')[1] of
'O': // Oracle
begin
Query.Macros.MacroByName('IF_ORA').Value = '';
Query.Macros.MacroByName('FI_ORA').Value = '';
Query.Macros.MacroByName('IF_SQL').Value = '/*';
Query.Macros.MacroByName('FI_SQL').Value = '*/';
end
'S': // SQL Server
begin
Query.Macros.MacroByName('IF_SQL').Value = '';
Query.Macros.MacroByName('FI_SQL').Value = '';
Query.Macros.MacroByName('IF_ORA').Value = '/*';
Query.Macros.MacroByName('FI_ORA').Value = '*/';
end
end;

Best Regards
Branko

burdian
Posts: 29
Joined: Wed 19 Nov 2008 19:25

Post by burdian » Mon 08 Dec 2008 16:31

Typo (copy / paste), of course correct select sql above is:

SELECT ...,
&IF_ORA DATE_FIELD + num_days < SYSDATE &FI_ORA
&IF_SQL DATEADD(day,num_days,DATE_FIELD) < GETDATE() &FI_SQL
...

Branko

Plash
Devart Team
Posts: 2844
Joined: Wed 10 May 2006 07:09

Post by Plash » Tue 16 Dec 2008 08:35

UniDAC 2.0 still does not have a feature to set different SQL depending on the server.

Challenger
Devart Team
Posts: 925
Joined: Thu 17 Nov 2005 10:53

Post by Challenger » Mon 05 Jan 2009 09:24

Please take a look at our roadmap here http://devart.com/forums/viewtopic.php?t=13767

Post Reply