OLAP DMLプログラムの内部でARGSファンクションを使用すると、プログラムに渡される引数を参照できます。このファンクションは、すべての引数を1つのテキスト値として返します。ARGSは、コマンドとして起動したプログラムの内部でのみ使用でき、プログラムをユーザー定義ファンクションとして起動したりCALL文で起動した場合は使用できません。
|
注意: 通常は、プログラムに渡される引数の参照にARGSファンクションを使用しなくても済むよう、ARGUMENT文を使用して、プログラム内で引数を定義します。プログラムに渡される引数をARGUMENTを使用して定義する方法の詳細は、「プログラムに渡される引数の宣言」を参照してください。 |
例
例7-23 ARGSによる引数の受渡し
簡単な売上レポートを生成するプログラムがあるとします。任意の月を対象にしてレポートを生成できるようにするため、プログラム内ではmonthディメンションを特定の月に制限しないことにします。LIMITコマンドでARGSファンクションを使用し、レポートの対象月は、プログラムの実行時に引数で指定するようにします。
ARGSの前にアンパサンド(&)を付けてLIMITコマンド内に記述すると、Oracle OLAPでは、&ARGSの値が置換されてからコマンドが実行されるめ、引数全体がLIMITコマンドの句として処理されます。salesreportプログラムには、&ARGSを指定したLIMITコマンドが記述されています。
DEFINE salesrpt PROGRAM PROGRAM PUSH month product district TRAP ON cleanup LIMIT month TO &ARGS LIMIT product TO 'CANOES' LIMIT district TO ALL REPORT grandtotals DOWN district sales cleanup: POP month product district END
次の文を実行すると、LIMITコマンドによって、monthディメンションに値Jan96およびFeb96が適用されます。
salesrpt 'Jan96' 'Feb96'
PRODUCT: CANOES
--------SALES--------
--------MONTH--------
DISTRICT Jan96 Feb96
----------------------------------
Boston 70,489.44 82,237.68
Atlanta 56,271.40 61,828.33
Chicago 48,661.74 54,424.94
Dallas 35,244.72 40,218.43
Denver 44,456.41 50,623.19
Seattle 67,085.12 74,834.29
---------- ---------- --
322,208.83 364,166.86
========== ========== ==