Hitachi

Hitachi Advanced Data Binder AP開発ガイド


8.3.26 nativeSQL(String sql)

〈この項の構成〉

(1) 機能

指定したSQL文内のエスケープ句を,HADBが実行できる形式に変換します。

(2) 形式

public synchronized String nativeSQL(String sql) throws SQLException

(3) 引数

String sql

SQL文を指定します。

(4) 戻り値

HADBが実行できるSQL文が返却されます。

sqlnullを指定した場合,nullが返却されます。sqlに空文字を指定した場合,空文字が返却されます。

(5) 発生する例外

次に示す場合にSQLExceptionが投入されます。

(6) エスケープ句の構文規則

指定されたSQL文内のエスケープ句を,HADBが実行できる形式に変換して返します。エスケープ句の構文規則を次に示します。

エスケープ句 ::= 日付・時刻・時刻印のエスケープシーケンス
       | LIKE述語のエスケープ文字のエスケープシーケンス
       | 外結合のエスケープシーケンス
       | スカラ関数のエスケープシーケンス
日付・時刻・時刻印のエスケープシーケンス ::= 日付のエスケープシーケンス
                     | 時刻のエスケープシーケンス
                     | 時刻印のエスケープシーケンス
日付のエスケープシーケンス ::=
     エスケープ開始子 d 日付データの既定の文字列表現※1 エスケープ終了子
時刻のエスケープシーケンス ::=
     エスケープ開始子 t 時刻データの既定の文字列表現※2 エスケープ終了子
時刻印のエスケープシーケンス ::=
     エスケープ開始子 ts 時刻印データの既定の文字列表現※3 エスケープ終了子
LIKE述語のエスケープ文字のエスケープシーケンス ::= 
     エスケープ開始子 escape エスケープ文字 エスケープ終了子
外結合のエスケープシーケンス ::= エスケープ開始子 oj 結合表 エスケープ終了子
スカラ関数のエスケープシーケンス ::= エスケープ開始子 fn スカラ関数 エスケープ終了子
スカラ関数 ::= 標準形式のスカラ関数※4
エスケープ開始子 ::= '{'
エスケープ終了子 ::= '}'
注※1

'YYYY-MM-DD'で表される文字列表現のことです。

注※2

'hh:mm:ss[.f...]'で表される文字列表現のことです。

注※3

'YYYY-MM-DD hh:mm:ss[.f...]'で表される文字列表現のことです。

注※4

標準形式のスカラ関数については,「7.8 エスケープ句で指定できるスカラ関数」を参照してください。

なお,下線部には,エスケープ句を指定できません。また,JDBCドライバでは構文解析をしないで,変換後もそのままとし,HADBサーバの構文解析に任せます。

エスケープシーケンスのキーワードを次に示します。キーワードについては,大文字と小文字を区別しません。

  1. 日付のエスケープシーケンス内の"d"

  2. 時刻のエスケープシーケンス内の"t"

  3. 時刻印のエスケープシーケンス内の"ts"

  4. LIKE述語のエスケープ文字のエスケープシーケンス内の"escape"

  5. 外結合のエスケープシーケンス内の"oj"

  6. スカラ関数のエスケープシーケンス内の"fn"

エスケープ句の入力規則を次に示します。

エスケープ句の変換規則を次の表に示します。

表8‒10 エスケープ句の変換規則

対象エスケープ句

変換前

変換後

日付

エスケープ開始子 d 日付データの既定の文字列表現 エスケープ終了子

DATE日付データの既定の文字列表現

時刻

エスケープ開始子 t 時刻データの既定の文字列表現 エスケープ終了子

TIME時刻データの既定の文字列表現

時刻印

エスケープ開始子 ts 時刻印データの既定の文字列表現 エスケープ終了子

TIMESTAMP時刻印データの既定の文字列表現

LIKE

エスケープ開始子 escape エスケープ文字 エスケープ終了子

escape エスケープ文字

外結合

エスケープ開始子 oj 結合表 エスケープ終了子

結合表

スカラ関数

エスケープ開始子 fn スカラ関数 エスケープ終了子

HADB形式のスカラ関数

注※

標準形式のスカラ関数を,HADB形式に変換します。

標準形式とHADB形式が異なるスカラ関数の変換内容を次の表に示します。

基本的に,スカラ関数の引数の個数チェックはしません。

表8‒11 標準形式とHADB形式が異なるスカラ関数の変換内容一覧

スカラ関数

変換前の形式

変換後の形式(HADB形式)

数学関数

CEILING(number)

CEIL(number)

LOG(float)

LN(float)

LOG10(float)

LOG(10,float)

RAND([number, number])

RANDOM([number, number])

TRUNCATE(number[, places])

TRUNC(number[, places])

文字列関数

CHAR(code)

CHR(code)

LCASE(string)

LOWER(string)

OCTET_LENGTH(string)

LENGTHB(string)

SUBSTRING(string, start[, length])

SUBSTR(string, start[, length])

UCASE(string)

UPPER(string)

時刻と日付の関数

CURDATE()

CURRENT_DATE

CURRENT_DATE()

CURRENT_DATE

CURRENT_TIME()

CURRENT_TIME

CURRENT_TIMESTAMP()

CURRENT_TIMESTAMP

CURTIME()

CURRENT_TIME

NOW()

CURRENT_TIMESTAMP

システム関数

USER()

CURRENT_USER