翻譯|使用教程|編輯:黃竹雯|2019-04-25 15:37:31.000|閱讀 500 次
概述:數(shù)據(jù)庫(kù)應(yīng)用程序使用SQL語(yǔ)句操作數(shù)據(jù)。除非用戶直接輸入,否則語(yǔ)句可以采用兩種方式構(gòu)建,在開(kāi)發(fā)期間進(jìn)行硬編碼,或在運(yùn)行時(shí)構(gòu)建。第一種方式對(duì)開(kāi)發(fā)人員來(lái)說(shuō)非常方便,而第二種方式則更靈活。UniDAC可以結(jié)合這兩種方法,從而達(dá)到最佳效果:你可以對(duì)在運(yùn)行時(shí)轉(zhuǎn)換為適當(dāng)語(yǔ)法的SQL語(yǔ)句進(jìn)行硬編碼。本文主要介紹 條件執(zhí)行(IF)、文字和標(biāo)識(shí)符。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
為了使UniSQL更靈活,UniSQL支持將SQL代碼有條件地包含在結(jié)果語(yǔ)句中。如下所示:
{if my_macro} STATEMENT_1 {else} STATEMENT_2 {endif}
如果定義了宏 my_macro,則返回 STATEMENT_1,否則表達(dá)式的結(jié)果是STATEMENT_2 。 例如:
{if Oracle} SELECT * FROM dept {else} SELECT * FROM test.dept {endif}
{else}子句可以省略。 下面是一個(gè)更復(fù)雜的例子:
SELECT {if Oracle}RowId, {endif} DeptNo, DName FROM dept
請(qǐng)注意,你可以使用嵌套的 {if ...} 結(jié)構(gòu)來(lái)繼續(xù)分支下去。你也可以使用預(yù)定義的宏。
UniDAC為日期,時(shí)間戳和帶引號(hào)的標(biāo)識(shí)符提供通用語(yǔ)法。它的用法類似于宏的用法。 請(qǐng)注意,此功能不適用于 OLE DB,ODBC 和 DB2 數(shù)據(jù)提供程序。
日期和時(shí)間常數(shù)
在日期/時(shí)間常量中,日期的部分用連字符分隔,時(shí)間部分用冒號(hào)分隔,并且在兩個(gè)部分之間有空格。下表說(shuō)明了日期/時(shí)間格式:
文字類型 | 格式 | 例子 |
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語(yǔ)句:
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')
通用引用標(biāo)識(shí)符
所有數(shù)據(jù)庫(kù)服務(wù)器都支持對(duì)包含空格或點(diǎn)等特殊符號(hào)的標(biāo)識(shí)符進(jìn)行引用。 UniDAC允許普遍包裝標(biāo)識(shí)符,以便引用能適用于每個(gè)數(shù)據(jù)庫(kù)服務(wù)器。使用以下語(yǔ)法:
"identifier"
例如,表達(dá)式“table1”.“field1”在 Oracle 和 PostgreSQL 中變成“table1”.“field1”,在 MS SQL Server 中變成 [table1].[field1],在 MySQL 服務(wù)器變成 `table1`.`field1`。 不要混淆單引號(hào),它用于包裝字符串常量。
本文屬于上一篇文章“條件執(zhí)行(IF)”、“文字和標(biāo)識(shí)符”部分。下一篇文章將為大家?guī)?lái)注釋和SQL函數(shù),敬請(qǐng)期待~
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn