Microsoft SQL Server 2005 JDBC Driver 支援使用 SQL 逸出序列,如 JDBC API 所定義。逸出序列用於 SQL 陳述式,以告知驅動程式 SQL 字串的逸出部分應以不同的方式處理。當 JDBC 驅動程式處理 SQL 字串的逸出部分時,它會將該部分的字串轉譯為 SQL Server 瞭解的 SQL 程式碼。
JDBC API 需要的逸出序列有五種,而且全部五種都受到 JDBC 驅動程式的支援:
LIKE 萬用字元常值
函數處理
日期和時間常值
預存程序呼叫
外部聯結
JDBC 驅動程式所使用的逸出序列語法如下:
{keyword ...parameters...}
注意
JDBC 驅動程式的 SQL 逸出處理永遠保持開啟狀態。
下列幾節描述五種逸出序列,以及它們如何受到 JDBC 驅動程式支援。
LIKE 萬用字元常值
JDBC 驅動程式支援使用 LIKE 子句萬用字元當做常值的 {escape 'escape character'} 語法。例如,下列程式碼將會傳回 col3 的值,其中 col2 的值會逐字以底線開頭 (而非其萬用字元用法)。
ResultSet rst = stmt.executeQuery("SELECT col3 FROM test1 WHERE col2
LIKE '\\_%' {escape '\\'}");
注意
逸出序列必須位於 SQL 陳述式結尾。對於命令字串中的多個 SQL 陳述式,則逸出序列必須位於每個相關 SQL 陳述式的結尾。
函數處理
JDBC 驅動程式在 SQL 陳述式中支援函數逸出序列,其語法如下:
{fn functionName}
其中 functionName 是 JDBC 驅動程式支援的函數。例如:
SELECT {fn UCASE(Name)} FROM Employee
下表列出使用函數逸出序列時,JDBC 驅動程式支援的各種函數:
| 字串函數 | 數值函數 | 日期時間函數 | 系統函數 |
|---|---|---|---|
ASCII CHAR CONCAT DIFFERENCE INSERT LCASE LEFT LENGTH LOCATE LTRIM REPEAT REPLACE RIGHT RTRIM SOUNDEX SPACE SUBSTRING UCASE |
ABS ACOS ASIN ATAN ATAN2 CEILING COS COT DEGREES EXP FLOOR LOG LOG10 MOD PI POWER RADIANS RAND ROUND SIGN SIN SQRT TAN TRUNCATE |
CURDATE CURTIME DAYNAME DAYOFMONTH DAYOFWEEK DAYOFYEAR EXTRACT HOUR MINUTE MONTH MONTHNAME NOW QUARTER SECOND TIMESTAMPADD TIMESTAMPDIFF WEEK YEAR |
DATABASE IFNULL USER |
注意
如果您嘗試使用資料庫不支援的函數,將會發生錯誤。
日期和時間常值
日期、時間和時間戳記常值的逸出語法如下:
{literal-type 'value'}
其中 literal-type 是下列其中之一:
| 常值類型 | 描述 | 值格式 |
|---|---|---|
d |
日期 |
yyyy-mm-dd |
t |
時間 |
hh:mm:ss [1] |
ts |
時間戳記 |
yyyy-mm-dd hh:mm:ss[.f...] |
例如:
UPDATE Orders SET OpenDate={d '2005-01-31'}
WHERE OrderID=1025
預存程序呼叫
JDBC 驅動程式支援預存程序呼叫的 {? = call proc_name(?,...)} 和 {call proc_name(?,...)} 逸出語法,視您是否需要處理傳回參數而定。
程序是一種儲存在資料庫中的可執行物件。通常,它是先行編譯的一或多個 SQL 陳述式。呼叫預存程序的逸出序列語法如下:
{[?=]call procedure-name[([parameter][,[parameter]]...)]}
其中的 procedure-name 指定預存程序的名稱,而 parameter 則指定預存程序參數。
如需搭配預存程序使用 call 逸出序列的詳細資訊,請參閱<搭配預存程序使用陳述式>。
外部聯結
JDBC 驅動程式支援 SQL92 左方外部聯結、右方外部聯結和完整外部聯結語法。外部聯結的逸出序列如下:
{oj outer-join}
其中 outer-join 為:
table-reference {LEFT | RIGHT | FULL} OUTER JOIN
{table-reference | outer-join} ON search-condition
其中 table-reference 為資料表名稱,而 search-condition 為您要用於資料表的聯結條件。
例如:
SELECT Customers.CustID, Customers.Name, Orders.OrderID, Orders.Status
FROM {oj Customers LEFT OUTER JOIN
Orders ON Customers.CustID=Orders.CustID}
WHERE Orders.Status='OPEN'
JDBC 驅動程式支援下列外部聯結逸出序列:
左方外部聯結
右方外部聯結
完整外部聯結
巢狀外部聯結