CURRENT TEMPORAL BUSINESS_TIME 特殊レジスター
CURRENT TEMPORAL BUSINESS_TIME 特殊レジスターは、アプリケーション期間のテンポラル表への参照のためのデフォルトの BUSINESS_TIME 期間指定で使用される TIMESTAMP(12) 値を指定します。
アプリケーション期間テンポラル表が参照され、CURRENT TEMPORAL BUSINESS_TIME 特殊レジスターの有効な値が CTBT (NULL 以外の値) で表される場合、以下の期間が暗黙的に指定されます。
FOR BUSINESS_TIME AS OF CTBTアプリケーション期間テンポラル表が
UPDATE または DELETE ステートメントのターゲットであり、
CURRENT TEMPORAL BUSINESS_TIME 特殊レジスターで有効になっている値が NULL 値ではない場合、
以下の述部が暗黙的に追加で指定されます。
bt_begin <= CURRENT TEMPORAL BUSINESS_TIME
AND bt_end > CURRENT TEMPORAL BUSINESS_TIMEwhere bt_begin and bt_end are
the begin and end columns of the BUSINESS_TIME period of the target
table of the UPDATE statement.ユーザー定義の関数またはプロシージャー内の特殊レジスターの初期値は、 呼び出し側アプリケーションから継承されます。 その他のコンテキストでは、特殊レジスターの初期値は NULL 値です。
SET CURRENT TEMPORAL BUSINESS_TIME ステートメントを実行することにより、この特殊レジスターの値を変更できます。
CURRENT TEMPORAL BUSINESS_TIME 特殊レジスターの設定は、以下のコンパイル済み SQL オブジェクトに影響を及ぼします (BUSTIMESENSITIVE バインド・オプションを YES に設定して関連パッケージがバインドされている場合)。
- SQL プロシージャー
- コンパイル済み関数
- コンパイル済みトリガー
- コンパウンド SQL (コンパイル済み) ステートメント
- 外部 UDF
以下の例では、表 IN_TRAY がアプリケーション期間のテンポラル表であると想定します。
例 1: CURRENT TEMPORAL BUSINESS_TIME 特殊レジスターによって指定された日付現在の、IN_TRAY にあるメッセージの状態に基づき、ユーザー ID とサブジェクト行をリストします。
SELECT SOURCE, SUBJECT FROM IN_TRAYCURRENT TEMPORAL BUSINESS_TIME 特殊レジスターが以前は値 CURRENT TIMESTAMP-4 DAYS に設定されていて、現在は NULL 値に設定されているとすると、次のステートメントは同じ結果を戻します。
SELECT SOURCE, SUBJECT
FROM IN_TRAY
FOR BUSINESS_TIME AS OF CURRENT TIMESTAMP-4 DAYS例 2: CURRENT TEMPORAL BUSINESS_TIME 特殊レジスターによって指定された日付より前に送信された、IN_TRAY にあるメッセージのユーザー ID とサブジェクト行をリストします。
SELECT SOURCE, SUBJECT
FROM IN_TRAY
WHERE DATE(RECEIVED) < DATE(CURRENT TEMPORAL BUSINESS_TIME)CURRENT TEMPORAL BUSINESS_TIME 特殊レジスターが以前は '2011-01-01-00.00.00' に設定されていて、現在は NULL 値に設定されているとすると、次のステートメントは同じ結果を戻します。
SELECT SOURCE, SUBJECT
FROM IN_TRAY
FOR BUSINESS_TIME AS OF '2011-01-01-00.00.00'
WHERE DATE(RECEIVED) < DATE('2011-01-01-00.00.00')