ヘッダーをスキップ
Oracle OLAP DMLリファレンス
11g リリース1(11.1)
E05732-02
  目次へ
目次
索引へ
索引

戻る
戻る
 
次へ
次へ
 

TEMPSTAT

TEMPSTATコマンドは、FORループ内またはREPORT文によって生成されるループ内でループ処理されているディメンションを制限するコマンドです。ステータスはTEMPSTATに続く文の実行後にリストアされます。DO ...DOEND句がTEMPSTATの後に続く場合、ステータスは、一致するDOENDか、BREAK文またはGOTO文が検出された時点でリストアされます。TEMPSTATは、プログラム内でのみ使用できます。

構文

TEMPSTAT dimension...

     statement block

引数

dimension(s)

FORループまたはREPORT文によって生成される自動ループ内でそのステータスが一時的に変更される1つ以上のディメンション。

statement block

ディメンションのステータスを変更する1つ以上の文。一時的なステータスの下で1つ以上の文を実行するには、それらをDO ... DOENDで囲みます。

注意

TEMPSTAT文のネスト

TEMPSTATコマンドは、一方のコマンド内にもう一方のコマンドをネストでき、ネストされたTEMPSTATコマンド内では同じディメンションを繰り返すことができます。

TEMPSTATの配置

REPORTがループ処理する間にディメンションのステータスを変更する場合、TEMPSTAT文は、REPORT文の前ではなくそのREPORTのループ内に配置する必要があります。たとえば、monthのステータスを変更するmonthly_salesというユーザー定義ファンクションを作成し、monthly_salesmonthをループ処理するREPORT文の一部であるとします。この場合、ステータスの変更が行われるように、TEMPSTAT文をmonthly_salesファンクション内に配置する必要があります。これは、REPORT文がMONTHをループ処理するFORループ内のTEMPSTAT DO/DOENDの間にある場合にも当てはまります。

POPおよびPOPLEVELコマンド

TEMPSTAT文ブロックのDO/DOENDの間では、対応するPUSH文がブロックにないかぎり、POP文を使用してブロックのTEMPSTATで保護されているディメンションをポップすることはできません。

同様にTEMPSTAT文ブロックのDO/DOENDの間では、次の2つの条件のいずれかが満たされないかぎり、POPLEVEL文を使用してブロックのTEMPSTATが保護しているディメンションをポップできません。1つは、対応するPUSHLEVEL文もブロックにある場合、もう1つはPUSHLEVEL文の指定以降にディメンションのプッシュのみがブロック内にある場合です。

LIMITおよびCONTEXTコマンドのみの使用

TEMPSTAT文のDO/DOENDの間において、ディメンションのループ処理の中でディメンションのステータスを変更する唯一の方法は、LIMITまたはCONTEXT APPLYコマンドを使用することです(詳細は、LIMITコマンドおよびCONTEXTコマンドを参照)。POPまたはPOPLEVELを使用して、ディメンションのステータスを変更することはできません。さらに、ディメンションに値を追加する演算を実行することもできません。これは、値の追加によってもディメンションのステータスがALLに変更されるためです。たとえば、MAINTAIN ADD、FILEREAD APPENDおよびIMPORT(EIFファイルの新しい値を使用)は、ディメンションに値を追加します。

FORループ内のTEMPSTAT

次のプログラムの抜粋では、TEMPSTAT文を使用してFOR marketループ内のmarketディメンションが制限されています。

FOR market
DO
 TEMPSTAT market
  DO
   LIMIT market TO CHILDREN USING market.market
   REPORT market
  DOEND
DOEND