SQL 解説書
SET CURRENT REFRESH AGE ステートメントは、
CURRENT REFRESH AGE 特殊レジスターの値を変更します。
このステートメントは、トランザクションの制御下にはありません。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込むか、
あるいは対話式に発行することができます。
このステートメントは、動的に準備可能な実行可能ステートメントです。
許可
このステートメントの実行には、特に権限は必要ありません。
構文
.-=-.
>>-SET--CURRENT REFRESH AGE--+---+----+-numeric-constant-+-----><
+-ANY--------------+
'-host-variable----'
説明
- numeric-constant
- タイム・スタンプ期間を表す DECIMAL(20,6) 値。
この値には、0 または 99 999 999 999 999 を指定しなければなりません (値のマイクロ秒部分は無視されるので、
任意の値を指定できます)。
- 0
- REFRESH IMMEDIATE で定義された要約表だけを使って照会処理を最適化できることを示しています。
- 99999999999999
- REFRESH DEFERRED または REFRESH IMMEDIATE で定義された任意の要約表を使って照会処理を最適化できることを示しています。
この値は 9 999 年、99 か月、99 日、99 時間、99 分、99 秒を表します。
- ANY
- これは、99999999999999 を簡略化したものです。
- host-variable
- タイプ DECIMAL(20,6) の値、または DECIMAL(20,6) に割り当て可能な他のタイプ。
NULL に設定することはできません。
host-variable が標識変数を伴っている場合、
その標識変数の値は NULL 値以外でなければなりません (SQLSTATE 42815)。
host-variable の値には、
0 または 99 999 999 999 999.000000 を
指定しなければなりません。
注
- CURRENT REFRESH AGE 特殊レジスターの初期値はゼロです。
- CURRENT REFRESH AGE 特殊レジスターをゼロ以外の値に設定する場合は、注意が必要です。
基礎となる基礎表の値を表さない要約表を使って照会処理を最適化できるようにすると、
照会結果が基礎表のデータを正確に反映しない場合があります。
とはいえ、基礎データが変化していないことが分かっている場合、
あるいはデータに関する知識に基づいて照会結果のエラーの度合いを受け入れるつもりである場合、
これはさほど気になる問題にならないことがあります。
- タイム・スタンプの算術演算では、
CURRENT REFRESH AGE の値 99 999 999 999 999.000000 を使用することはできません。
その結果が、日付の有効範囲外になるからです (SQLSTATE 22008)。
例
例 1:
以下のステートメントは、CURRENT REFRESH AGE 特殊レジスターを設定します。
SET CURRENT REFRESH AGE ANY
例 2:
以下の例では、
CURMAXAGE という名前のホスト変数に CURRENT REFRESH AGE 特殊レジスターの現行値を入れます。
EXEC SQL VALUES (CURRENT REFRESH AGE) INTO :CURMAXAGE;
値は、前の例で設定された 99999999999999.000000 になります。
[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]