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

戻る
戻る
 
次へ
次へ
 

すべてのデータ・オブジェクトの値に対するOLAP DML文の適用

OLAP DMLは多次元言語です。したがって、OLAP DMLでは一度の操作が値セット全体に適用されます。これは、概念的には、これらの操作が変数内のすべてのセルの値に適用されると考えられ、一方、物理的には、これらの操作が変数である配列内のすべての要素に適用されると考えられます。したがって、OLAP DMLの代入文(SETまたは=)を使用して、変数のすべての要素に値を代入するための明示的なループをコーディングする必要はありません。かわりに、1つ以上のディメンションを持つオブジェクトに対して文を発行する場合、文はオブジェクトの各ディメンションに対してステータスの値をループ処理し、要求された演算を実行します。

たとえば、3つの値Prod01Prod02およびProd03を持つprodidという名前のディメンションがあり、prodidによってディメンション化されるquantityという名前の変数があるとします。次のコードの抜粋が示すように、Prod01Prod02およびProd03がステータス内のすべての値である場合、値3をquantityに代入すると、値3がquantity内のすべての要素に代入されます。

quantity = 3
REPORT quantity

PRODID          QUANTITY
-------------- ----------
PROD01             3.00
PROD02             3.00
PROD03             3.00

他のOLAP DML文(REPORT、ROWおよびFORなど)も、実行時に、ディメンション化されたオブジェクトの要素のうち、ステータスにあるすべての要素をループ処理します。

文のデフォルトのループ動作の変更

文は、デフォルトでは、オブジェクトのディメンションがオブジェクトの定義にリストされている順番に従って、ディメンション化されたオブジェクトの値をループ処理します。さらに、変数がコンポジットによってディメンション化されている場合、ほとんどのループ文は、変数がコンポジットによってディメンション化されているのではなく、コンポジットのベース・ディメンションによってディメンション化されているものとして変数をループ処理します。

OLAP DMLには、デフォルトのループ処理の動作を変更する、あるいはループ処理を明示的に要求する次のような方法があります。

  • ACROSS句: 一部のループ・コマンド(値の代入に使用する代入文など)には、デフォルト以外のループ処理の動作を指定できるACROSS句があります。ACROSS句の詳細は、SET(=)コマンドを参照してください。

  • ACROSSコマンド: OLAP DML文がループ文ではない場合、あるいはACROSS句を含まない場合、ACROSSコマンドの引数としてDML文をコーディングすることによりループ処理の動作を要求できます。