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

戻る
戻る
 
次へ
次へ
 

PUSHLEVEL

PUSHLEVELコマンドは、一連のPUSHコマンドの始点をマークするコマンドです。対応するPOPLEVEL文を使用すると、PUSHLEVELの後に実行したPUSHコマンドで保存したすべての値をリストアできます。POPLEVELは、一連のコマンドを開始するPUSHLEVEL文と同じマーカーを指定する必要があります。PUSHLEVELは、プログラム内でのみ使用できます。

構文

PUSHLEVEL marker-expression

引数

marker-expression

すべての保存値が即座にポップされる一連のPUSHコマンドの始点をマークするためのテキスト値。まったく同じmarker-expressionを指定するPOPLEVEL文によって、一連の保存値全体がリストアされます。

注意

PUSHLEVELとPOPLEVEL文の作成時の注意事項

PUSHLEVEL文をコーディングする際は、次の点に注意してください。

例10-86 レベル・マーカーの作成

PUSHLEVEL文を使用して、firstlevelという名前のレベル・マーカーを作成できます。その後でPUSHを使用すると、現行値を保存できます。

PUSHLEVEL 'firstlevel'
PUSH month DECIMALS ZSPELL

レベル・マーカーは、一重引用符で囲まれた任意のテキストです。値がレベル・マーカーの名前になる単一セルのID変数またはTEXT変数の名前を指定することもできます。プログラムの終了処理の部分にPOPLEVEL文を使用すると、firstlevelマーカーの作成以降に保存したすべての値をリストアできます。

POPLEVEL 'firstlevel'

例10-87 PUSHLEVELおよびPOPLEVELコマンドのネスト

PUSHLEVELおよびPOP LEVELコマンドをネストすると、特定の値のグループをプログラム内の一定の場所に保存し、他の値のグループをプログラム内の別の場所に保存できます。次の例は、2組のネストしたPUSHLEVELコマンドとPOPLEVELコマンドを示します。

PUSHLEVEL 'firstlevel'
PUSH PAGESIZE DECIMALS "Saves values in FIRSTLEVEL
        ...
PUSHLEVEL 'secondlevel'
PUSH month product     "Saves values in SECONDLEVEL
      ...
POPLEVEL 'secondlevel' "Restores values in SECONDLEVEL
       ...
POPLEVEL 'firstlevel'  "Restores values in FIRSTLEVEL

通常は、1つのプログラム内でPUSHLEVELおよびPOPLEVELコマンドの複数のペアを使用することはありません。ただし、1つのプログラムが別のプログラムをコールし、それぞれのプログラムにPUSHLEVELおよびPOPLEVELコマンドのペアが1組ずつ含まれる場合、ネスト機能が自動的に働きます。

例10-88 ワンステップの復元とネスト・レベル

次のプログラムは、DECIMALSの元の値や、monthproductおよびdistrictの元のステータスがプログラム内で個別にプッシュされているが、ワンステップで復元するためにPUSHLEVEL 'rpt1'を使用してこれらをマークします。

ネストを実際に示すため、このプログラムには、ネストしたPUSHLEVELとPOPLEVELのペア、そのマーカーとしての'rpt2'、および複数のSTATUSコマンドが様々な箇所に含まれます。プログラムの出力とプログラムを比較することにより、ステータスがどのように影響を受けているかがわかります。

DEFINE sales.RPT PROGRAM
PROGRAM
STATUS month product district

PUSHLEVEL 'rpt1'
PUSH DECIMALS month
DECIMALS = 0
LIMIT month TO 'Jan96'
REPORT WIDTH 8 DOWN district WIDTH 9 ACROSS product: expense
PUSH product
LIMIT product TO 'Racquets' 'Sportswear'
REPORT DOWN district ACROSS product: advertising

PUSHLEVEL 'rpt2'
PUSH district
LIMIT district TO 'Atlanta' 'Dallas' 'Chicago'
REPORT DOWN district ACROSS product: sales
BLANK
STATUS month product district
BLANK

POPLEVEL 'rpt2'
STATUS month product district
BLANK
POPLEVEL 'rpt1'

STATUS month product district
END

sales.rptプログラムによって生成される出力は、次のとおりです。

The current status of MONTH is:
ALL
The current status of PRODUCT is:
ALL
The current status of DISTRICT is:
ALL
MONTH: JAN96
         ---------------------EXPENSE---------------------
         ---------------------PRODUCT---------------------
DISTRICT   Tents    Canoes   Racquets  Sportswear  Footwear
-------- --------- --------- --------- ---------- ----------
Boston      31,299    67,527    52,942     49,668    80,565
Atlanta     41,139    53,186    57,159    108,047    99,758
Chicago     27,768    45,621    53,756     65,055    81,639
Dallas      47,063    34,072   118,807    113,629    19,785
Denver      33,177    42,975    89,144     63,380    36,960
Seattle     41,043    64,009    26,719     38,970    46,900
Month: JAN96
               -----ADVERTISING-----
               -------PRODUCT-------
DISTRICT        RAcquets  Sportswear
-------------- ---------- ----------
Boston              3,784      3,352
Atlanta             4,384      9,509
Chicago             3,351      5,283
Dallas              8,700      8,340
Denver              6,215      4,654
Seattle             2,344      3,726
MONTH: Jan96
               --------SALES--------
               -------PRODUCT-------
DISTRICT        Racquets  Sportswear
-------------- ---------- ----------
Atlanta            61,895    129,616
Dallas            125,880    128,115
Chicago            58,649     77,490
The current status of MONTH is:
JAN96
The current status of PRODUCT is:
RACQUETS, SPORTSWEAR
The current status of DISTRICT is:
ATLANTA, DALLAS, CHICAGO

The current status of MONTH is:
JAN96
The current status of PRODUCT is:
RACQUETS, SPORTSWEAR
The current status of DISTRICT is:
ALL

The current status of MONTH is:
ALL
The current status of PRODUCT is:
ALL
The current status of DISTRICT is:
ALL