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

前
 
次
 

ARGFR

OLAP DMLプログラムの内部でARGFRファンクションを使用すると、プログラムに渡される引数を参照できます。このファンクションは、1つ以上の引数のグループを、指定した引数の番号を先頭に単一のテキスト値として返します。ARGFRは、コマンドとして起動したプログラムの内部でのみ使用でき、プログラムをユーザー定義ファンクションとして起動したりCALL文で起動した場合は使用できません。


注意:

通常は、プログラムに渡される引数の参照にARGFRファンクションを使用しなくても済むよう、ARGUMENT文を使用して、プログラム内で引数を定義します。プログラムに渡される引数をARGUMENTを使用して定義する方法の詳細は、「プログラムに渡される引数の宣言」を参照してください。

戻り値

TEXT

構文

ARGFR(n)

パラメータ

n

参照する引数のグループにある最初の引数の位置に応じた数値。ARGFR(1)を指定すると最初の引数とその後のすべての引数が返され、ARGFR(2)を指定すると2番目の引数とその後のすべての引数が返されます(以降同様)。存在する引数の数がn個未満の場合、ARGFRはNULL値を返します。また、ARGFRはnの値が0(ゼロ)または負の値の場合にもNULL値を返します。

例7-22 ARGおよびARGFRによる引数の受渡し

売上レポートを生成するプログラムがあるとします。任意の製品および任意の期間(月単位)を対象にしてレポートを生成できるようにするため、プログラム内ではproductmonthの2つのディメンションを特定の値に制限しないことにします。そのかわりに、product引数にはARG、month引数にはARGFRファンクションを使用したLIMITコマンドを使用します。これによって、プログラムを実行したときにこれらの項目を指定できます。

ARGFRの前にアンパサンド(&)を付けてLIMITコマンド内に記述すると、Oracle OLAPでは、&ARGFRの値が置換されてからコマンドが実行されるため、引数全体がLIMITコマンドの句として処理されます。salesrprtプログラムには、&ARGFRを指定したLIMITコマンドが記述されています。

DEFINE salesrpt PROGRAM
PROGRAM
PUSH product month district
TRAP ON cleanup
LIMIT product TO UPCASE(ARG(1))
LIMIT month TO &ARGFR(2)
LIMIT district TO ALL
REPORT grandtotals DOWN district sales
cleanup:
POP product month district
END

salesrptプログラムのコマンドラインには、2つ以上の引数を指定する必要があります。最初の引数はレポートの対象製品を表し、2番目以降の引数は月を表します。LIMIT month文では、コマンドラインに引数として指定した月が&ARGFR(2)ファンクションによって返されます。

次の文によって、monthの値としてJan96Feb96Mar96およびApr96を指定したsalesrptプログラムが実行されます。

salesrpt 'Canoes' 'Jan96' TO 'Apr96'

この文によって生成される出力は、次のとおりです。

PRODUCT: CANOES
        -------------------SALES------------------
        -------------------MONTH------------------
DISTRICT    Jan96     Feb96      Mar96     Apr96   
------- ---------- ---------- ---------- --------- 
Boston  70,489.44  82,237.68  97,622.28 134,265.60 
Atlanta 56,271.40  61,828.33  77,217.62 109,253.38 
Chicago 48,661.74  54,424.94  68,815.71  93,045.46 
Dallas  35,244.72  40,218.43  46,810.68  64,031.28 
Denver  44,456.41  50,623.19  57,013.01  78,038.13 
Seattle 67,085.12  74,834.29  87,820.04 119,858.56 
       ---------- ---------- ---------- ---------- 
       322,208.83 364,166.86 435,299.34 598,492.41 
       ========== ========== ========== ========== 

次の文では、1996年の最初の3か月が指定されています。

salesrpt 'Tents' quarter 'Q1.96'

この文によって生成される出力は、次のとおりです。

PRODUCT: TENTS
               -------------SALES-------------
               -------------MONTH-------------
DISTRICT          Jan96     Feb96      Mar96
-------------- ---------- ---------- ---------
Boston         50,808.96  34,641.59  45,742.21
Atlanta        46,174.92  50,553.52  58,787.82
Chicago        31,279.78  31,492.35  42,439.52
Dallas         50,974.46  53,702.75  71,998.57
Denver         35,582.82  32,984.10  44,421.14
Seattle        45,678.41  43,094.80  54,164.06
              ----------  ---------- ---------
              260,499.35 246,469.11 317,553.32
              ========== ========== ==========