OLAP DMLコマンドは、SELECT FROM OLAP_TABLE文内で使用できます。詳細は次の項で説明します。
一般に、SQLファンクションは、問い合された表またはビューのすべての行について単独の結果行を返す単一行ファンクションです。Oracleでは、事前定義された様々なSQL単一行ファンクションをサポートしています。たとえば、数値データを返すCOS
、LOG
、ROUND
、文字データを返すUPPER
やLOWER
などがあります。
SELECT FROM OLAP_TABLE
文のコンテキストには、OLAP DMLファンクションが単一行ファンクションとして機能するようにOLAP DMLファンクションをラップするための、4つのSQLファンクションがあります。これらのファンクションは、それぞれデータ型が異なる4種類のOLAP DML式の結果を戻します。具体的には、Oracle OLAPの数式に使用するOLAP_EXPRESSION、Oracle OLAPのブール式に使用するOLAP_EXPRESSION_BOOL、Oracle OLAPの日時式に使用するOLAP_EXPRESSION_DATE、Oracle OLAPのテキスト式に使用するOLAP_EXPRESSION_TEXTです。これらの各SQLファンクションの引数の1つが、OLAP DMLファンクションです。
OLAP_EXPRESSIONファンクションおよびこれに類するファンクションは、他のOracle単一行ファンクションと同じ方法で(特にSELECT構文のリスト内や、WHERE
句およびORDER BY
句内で)指定できます。
OLAP_TABLE
の実行中にアナリティック・ワークスペースを即時に変更するためのメカニズムは複数あります。
OLAP_CONDITION
SQLファンクションを使用すると、SELECT FROM OLAP_TABLE
文のコンテキスト内でアナリティック・ワークスペースを変更できます。OLAP_CONDITION
は、(特にWHERE
句で)他のOracleファンクションと同じように指定できます。OLAP_CONDITION
を使用して、オプションを設定したり、LIMIT
コマンドを実行したり、OLAPのモデルや予測を実行したり、プログラムを実行したりできます。ワークスペースに対する変更は、一時的なものにすることも、問合せの完了時にセッションに残しておくこともできます。
OLAP_CONDITION
以外にも、OLAP_TABLE
ファンクション自体によってサポートされている構文が使用できます。たとえば、制限マップでのPREDMLCMD
句やPOSTDMLCMD
句、olap_commandパラメータなどです。OLAP_CONDITION
はOLAP_TABLE
内に埋め込まれていないため移植が可能で、また様々な入力ポイントで適用できるので汎用性があります。
OLAP_TABLE
は、問合せの結果セットを生成するLIMIT
コマンドの実行前に、制限マップ内のディメンションのステータスを保存します。データがフェッチされた後、OLAP_TABLE
はディメンションのステータスをリストアします。ディメンションのステータスが保存される前にOLAP DMLコマンドが実行されるようにするには、制限マップでPREDMLCMD
句を指定します。PREDMLCMD
句による変更は、OLAP_TABLE
の実行後もワークスペース内に保持されます(POSTDMLCMD
句で変更を無効にする場合を除く)。詳細は、limit_mapを参照してください。
OLAP_TABLE
のolap_commandパラメータには、結果セットがフェッチされる直前に実行されるOLAP DMLコマンドを指定します。一部の環境では、olap_commandパラメータにOLAP DML FETCHコマンドが含まれていることがあります。この場合は、このコマンドによりフェッチが管理されます。olap_commandパラメータによって設定された制限は、OLAP_TABLE
の実行中のみ有効です。詳細は、olap_commandを参照してください。