- TUniConnectyion.AssignConnect method that will allow connection sharing beetween main application and dlls
- TUniLoader component that will allow to use server possibilites of fast data loading
- TUniDump that will allow to dump and restore tables and data
- Unified SQL with the following features:
* Macros that have values specific for different databases (providers). In addition to the predefined macros you can define your own.
Macro is a set of name, condition and value. Macro evaluates to its value if underlying condition is enabled, or to an empty string if
the condition is not enabled. Conditions are enabled or disabled depending on the DBMS server TUniConnection is connected to.
For example, if you connect to Oracle server, the "Oracle" condition will be enabled. For example:
* Set of automatically mapped functions.Code: Select all
UniConnection1.Macros.Add('tablename', 'test.dept', 'MySQL'); UniConnection1.Macros.Add('tablename', 'dept', 'Oracle'); UniQuery.SQL.Text := 'select * from {tablename}';
UniDac will introduce standard for calling common SQL functions. This is a set of function names with fixed meaning. In the run time the function
is transformed either to the corresponding native function, or to an equivalent expression (for example, several functions). The construct syntax is
Code: Select all
{fn Function_Name(parameter1 [,parameter2 ... ])}
For example, the following fragment
Code: Select all
SELECT {fn TRIM(EName)} FROM emp
evaluates toCode: Select all
SELECT TRIM(EName) FROM emp
in MySQL, because there is a counterpart in the DBMS. But in MS SQL Server there is no single corresponding function, so the expression evaluates toCode: Select all
SELECT LTRIM(RTRIM(EName)) FROM emp
* Unified standard of literals.
UniDAC will provide universal syntax for dates, timestamps, intervals, LIKE expressions and quoted identifiers.
For example:Code: Select all
SELECT * FROM emp WHERE HIREDATE>{date '1982-01-15'}
in MySQL evaluates toCode: Select all
SELECT * FROM emp WHERE HIREDATE>CAST('1982-01-15' AS DATETIME)
and in Oracle it turns toCode: Select all
SELECT * FROM emp WHERE HIREDATE>TO_DATE('1982-01-15', 'YYYY-MM-DD')
* Conditional Execution (IF)
For the purpose of extra flexibility UniSQL supports conditional inclusion of SQL code into resulting statements. This is as simple as that:Code: Select all
{if my_macro} STATEMENT_1 {else} STATEMENT_2 {endif}
If macro my_macro is defined, the STATEMENT_1 is returned, otherwise STATEMENT_2 is the result of the expression. For instance:Code: Select all
{if Oracle} SELECT * FROM dept {else} SELECT * FROM test.dept {endif}
The {else} clause can be omitted. Here is a bit more sophisticated example:Code: Select all
SELECT {if Oracle}RowId, {endif} DeptNo, DName FROM dept
* There are also predefined macros that help to solve most common differences in SQL syntax: VARCHAR, DOUBLE, DATETIME, AS, EXCEPT, ServerVersion
* Outer Joins
In some old versions of Oracle server SQL syntax for OUTER JOINs differs from the common standard. The problem can be solved using conditional execution, but UniSQL allows to do it even easier with the {oj ...} construct:
{oj Outer_Join_Expression}
UniDAC Roadmap!
-
- Devart Team
- Posts: 925
- Joined: Thu 17 Nov 2005 10:53
UniDAC Roadmap!
We are planning to release a new version of UniDAC. After analysing the requests concerning the current UniDAC versions, we have formulated the following feature list to make a good product that will meet your needs and demands. We would like to hear your comments and suggestions concerning this list.