目次 | 前の項目 | 次の項目 | JDBCTM ガイド: 使用の開始 |
したがって、JDBC-Compliant(TM) ドライバがサポートしなければならない SQL-2 エントリレベルの拡張としては、次の 2 種類が定義されています。
{keyword ... parameters ...}
ODBC 互換のこのエスケープ構文は、一般に、同じ機能に対して ANSI が SQL-2 トランジショナルレベルで採用している構文と同じではありません。使う DBMS がすべて標準の SQL-2 構文をサポートしている場合は、ここで示したエスケープ構文の代わりに、標準構文を使うことが推奨されます。十分な数の DBMS がさらに広範に SQL-2 の構文とセマンティクスをサポートするようになれば、このエスケープ構文は必要なくなります。
{call procedure_name[(argument1, argument2, ...)]}
結果のパラメータを返すプロシージャの場合は、次の構文を使います。
{?= call procedure_name[(argument1, argument2, ...)]}
入力引数には、リテラルまたはパラメータを指定できます。ストアドプロシージャがサポートされているかどうかを調べるには、DatabaseMetaData.supportsStoredProcedure メソッドを使います。
次は、JDBC の SQL 文で日付を指定するときの構文です。
{d 'yyyy-mm-dd'}
yyyy-mm-dd では、1996-02-28 のように、年、月、日を指定します。ドライバは、このエスケープ節を、DBMS 固有の同等の表現に変換します。たとえば、Oracle の場合は、「Feb 28, 1996」のようになります。
TIME と TIMESTAMP にも同様のエスケープ節があります。
{t 'hh:mm:ss'}
{ts 'yyyy-mm-dd hh:mm:ss.f...'}
TIMESTAMP の秒の小数部分 (.f...) は省略できます。
{fn concat("Hot", "Java")}
{fn user()}
スカラー関数のセマンティクスの仕様については、X/Open CLI または ODBC の仕様を参照してください。参考のため、サポートされている関数の一覧を次に示します。ドライバの中には、一部の関数だけをサポートしているものもあります。 サポートされている関数を調べるには、DatabaseMetaData の次のメソッドを使います。getNumericFunctions() メソッドからは、サポートされている数値関数の名前をコンマで区切った一覧が返されます。 getStringFunctions() メソッドからは、同じ形式の文字列関数の一覧が返されます。
ほかのメソッドについても同様です。 数値関数は、ABS(number)、ACOS(float)、ASIN(float)、ATAN(float)、ATAN2(float1, float2)、CEILING(number)、COS(float)、COT(float)、DEGREES(number)、EXP(float)、FLOOR(number)、LOG(float)、LOG10(float)、MOD(integer1, integer2)、PI()、POWER(number, power)、RADIANS(number)、RAND(integer)、ROUND(number, places)、SIGN(number)、SIN(float)、SQRT(float)、TAN(float)、および TRUNCATE(number, places) です。
文字列関数は、ASCII(string)、CHAR(code)、CONCAT(string1, string2)、DIFFERENCE(string1, string2)、 INSERT(string1, start, length, string2)、LCASE(string)、LEFT(string, count)、 LENGTH(string)、LOCATE(string1, string2, start)、LTRIM(string)、REPEAT(string, count)、REPLACE(string1, string2, string3)、RIGHT(string, count)、RTRIM(string)、SOUNDEX(string)、SPACE(count)、SUBSTRING(string, start, length)、および UCASE(string) です。
時刻と日付の関数は、CURDATE()、CURTIME()、DAYNAME(date)、DAYOFMONTH(date)、 DAYHOFWEEK(date)、DAYOFYEAR(date)、HOUR(time)、MINUTE(time)、MONTH(time)、MONTHNAME(date)、NOW()、QUARTER(date)、SECOND(time)、TIMESTAMPADD(interval, count, timestamp)、TIMESTAMPDIFF(interval, timestamp1, timpestamp2)、WEEK(date)、および YEAR(date) です。
システム関数は、DATABASE()、IFNULL(expression, value)、および USER() です。
CONVERT(value, SQLtype) という式もあり、データ型には BIGINT、BINARY、BIT、CHAR、DATE、DECIMAL、DOUBLE、FLOAT、INTEGER、LONGVARBINARY、LONGVARCHAR、REAL、SMALLINT、TIME、TIMESTAMP、TINYINT、VARBINARY、および VARCHAR を指定できます。
これらの関数の構文は、DBMS の種類によってわずかに違います。 ドライバは、これらの構文を適切な構文にマッピングしたり、またはドライバ内で関数を直接実装したりします。
{escape 'escape-character'}
SELECT NAME FROM IDENTIFIERS WHERE ID LIKE '\_%' {escape '\'}
{oj outer-join}
table LEFT OUTER JOIN {table | outer-join} ON search-condition
外部結合については、SQL の文法の解説を参照してください。ドライバがサポートする外部結合の種類を調べるには、DatabaseMetaData で提供されている 3 つの boolean 型メソッドを使います。