ヘッダーをスキップ
Oracle® OLAP DMLリファレンス
11gリリース2 (11.2)
B61346-03
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

PUSHLEVEL

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

構文

PUSHLEVEL marker-expression

パラメータ

marker-expression

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

使用上の注意

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

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

  • 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つのプログラムに複数のレベルは必要ありません。ただし、1つのプログラムが別のプログラムをコールし、それぞれのプログラムに1組のPUSHLEVELおよびPOPLEVELコマンドが含まれる場合、ネストしたレベルが自動的に作成されます。

  • 複数のPUSHLEVELコマンドに対して同じマーカーを指定すると、同じマーカーを指定しているPOPLEVEL文によって、最後のPUSHLEVEL文以降に保存された値のみがリストアされます。

  • 複数のPUSHLEVELコマンドに対して異なるマーカーを指定すると、いずれかのPUSHLEVEL文のマーカーを指定するPOPLEVEL文によって、そのPUSHLEVEL文以降に保存されたすべての値がリストアされます。この場合、そのPUSHLEVELコマンド以降のPUSHLEVELコマンドの後に保存された値も含みます。

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

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

PUSHLEVEL 'firstlevel'
PUSH month DECIMALS ZSPELL

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

POPLEVEL 'firstlevel'

例10-86 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-87 ワンステップの復元とネスト・レベル

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

ネストを実際に示すため、このプログラムには、'rpt2'をマーカーとするネストしたPUSHLEVELとPOPLEVELのペア、および様々な箇所にあるいくつかの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