强大的跨数据库访问组件 UniDAC使用教程:条件执行(IF)、文字和标识符

Universal Data Access Components (UniDAC)是一款通用数据库访问组件,提供了多个数据库的直接访问,如针对Windows的Delphi,C++Builder, Lazarus (以及 Free Pascal), Mac OS X, iOS,Android,Linux和64和32位的FreeBSD等等。我们将长期的经验集于这个小组件,提供统一的数据库连接访问(如oracle、微软SQL等等)。这意味着你可以在你的项目之间轻松地切换不同的数据库,以及创建跨数据库应用程序接口。

                                                                                【下载UniDAC最新版本

                             强大的跨数据库访问组件 UniDAC使用教程:条件执行(IF)、文字和标识符

强大的跨数据库访问组件 UniDAC使用教程:条件执行(IF)、文字和标识符

条件执行(IF)

为了使UniSQL更灵活,UniSQL支持将SQL代码有条件地包含在结果语句中。如下所示:

{if my_macro} STATEMENT_1 {else} STATEMENT_2 {endif}

如果定义了宏 my_macro,则返回 STATEMENT_1,否则表达式的结果是STATEMENT_2 。 例如:

{if Oracle} 
SELECT * FROM dept
{else} 
SELECT * FROM test.dept
{endif}

{else}子句可以省略。 下面是一个更复杂的例子:

SELECT {if Oracle}RowId, {endif} DeptNo, DName FROM dept

请注意,你可以使用嵌套的 {if ...} 结构来继续分支下去。你也可以使用预定义的宏。


文字和标识符

UniDAC为日期,时间戳和带引号的标识符提供通用语法。它的用法类似于宏的用法。 请注意,此功能不适用于 OLE DB,ODBC 和 DB2 数据提供程序。

日期和时间常数

在日期/时间常量中,日期的部分用连字符分隔,时间部分用冒号分隔,并且在两个部分之间有空格。下表说明了日期/时间格式:

文字类型 格式 例子
date yyyy-mm-dd {date '2006-12-31'}
time hh:mm:ss {time '23:59:59'}
timestamp yyyy-mm-dd hh:mm:ss {timestamp '2006-12-31 23:59:59'}

以下SQL语句:

 SELECT * FROM emp WHERE HIREDATE>{date '1982-01-15'}

在MySQL中为

 SELECT * FROM emp WHERE HIREDATE>CAST('1982-01-15' AS DATETIME)

在Oracle中为

  SELECT * FROM emp WHERE HIREDATE>TO_DATE('1982-01-15', 'YYYY-MM-DD')

通用引用标识符

所有数据库服务器都支持对包含空格或点等特殊符号的标识符进行引用。 UniDAC允许普遍包装标识符,以便引用能适用于每个数据库服务器。使用以下语法:

"identifier"

例如,表达式“table1”.“field1”在 Oracle 和 PostgreSQL 中变成“table1”.“field1”,在 MS SQL Server 中变成 [table1].[field1],在 MySQL 服务器变成 `table1`.`field1`。 不要混淆单引号,它用于包装字符串常量。

本文属于上一篇文章“条件执行(IF)”、“文字和标识符”部分。下一篇文章将为大家带来注释和SQL函数,敬请期待~

强大的跨数据库访问组件 UniDAC使用教程:条件执行(IF)、文字和标识符