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

前
 
次
 

TRAP

TRAPコマンドをOLAP DMLプログラムの内部で使用すると、プログラムにエラーが発生した場合やユーザーがプログラムを中断した場合に、プログラムの実行がラベルに分岐されます。実行がトラップ・ラベルに分岐した場合、そのトラップ・ラベルは非アクティブ化されます。


関連項目:

プログラムおよびモデル内の宣言エラーがOracle OLAPによってどのように処理されるかについては、「宣言エラー」を参照してください。

構文

TRAP {OFF|ON errorlabel [NOPRINT|PRINT]}

パラメータ

OFF

トラップ・ラベルを非アクティブ化します。一度にアクティブ化できるトラップ・ラベルは1つのみであるため、TRAP OFFを設定する場合には、errorlabelは指定しないでください。ラベルとOFFを組み合せて指定すると、エラーが発生します。


注意:

トラップ・ラベルがあるプログラムでエラーが発生すると、実行はラベルに分岐し、トラップは非アクティブ化されます。TRAP OFF文を明示的に実行する必要はありません。したがって、実行がラベルに分岐した後でエラーが発生した場合は、同じラベルに再度分岐されることはありません。

ON errorlabel

トラップ・ラベル(errorlabel)をアクティブ化します。TRAPがアクティブになっている場合、プログラム内でエラーが発生すると実行はerrorlabelに分岐します。

errorlabel

「ラベルの構成のガイドライン」に従って構成された、プログラム中の他の位置にあるラベルの名前。プログラムの実行は、指定したラベルの直後の行に分岐します。


注意:

ONで指定するerrorlabelの後にはコロンを記述しないでください。ただし、プログラムの他の位置にある実際のラベルの後にはコロンを付けます。

errorlabelに対応する実際のトラップ・ラベルが同じプログラム内に存在しない場合は、エラーが発生して実行は停止します。


NOPRINT
PRINT

エラー・メッセージの出力を抑止するかどうかを指定します。NOPRINTを指定すると、エラー・メッセージは抑止されます。PRINT(デフォルト)を指定した場合は、エラー・メッセージが現行の出力ファイルに送られた後に実行がトラップ・ラベルに分岐します。OFFキーワードが指定されている場合、NOPRINTとPRINTを指定しても意味はなく、エラーが発生します。

例10-156 プログラムのエラー・トラップ

次のプログラムの抜粋では、TRAP文によって制御をラベルに移行できます。このラベルでは、オプションやディメンション・ステータスの設定値がプログラムの実行前に保持されていた値に戻り、エラーが通知されます。

PUSH month DECIMALS LSIZE PAGESIZE
TRAP ON haderror NOPRINT
LIMIT month TO LAST 1
   ...
POP month DECIMALS LSIZE PAGESIZE
RETURN
 
haderror:
POP month DECIMALS LSIZE PAGESIZE
SIGNAL ERRORNAME ERRORTEXT

例10-157 プログラム・エラー・メッセージの即時の表示

エラー・メッセージを即時に生成するには、ネストした各プログラムでTRAP文を使用しますが、NOPRINTキーワードは使用しないでください。エラーが発生すると、エラー・メッセージが即座に生成され、実行はトラップ・ラベルに分岐します。

トラップ・ラベルでは、内容を問わず必要なエラー処理コマンドを実行し、環境をリストアします。次に、PRGERRキーワードを指定したSIGNAL文を実行します。

SIGNAL PRGERR

PRGERRキーワードをSIGNAL文で使用すると、エラー・メッセージは生成されず、名前PRGERRがERRORNAMEに格納されません。SIGNAL文により、現行のプログラムの実行元であったプログラムに渡されるエラー状態が通知されます。コール側のプログラムにトラップ・ラベルがある場合、プログラムの実行はそのラベルに分岐します。

ネストしたプログラムの連鎖内の各プログラムがTRAPコマンドおよびSIGNALコマンドをこのように使用する場合は、エラー状態をプログラムの連鎖全体を経由して渡すことができます。各プログラムには、次のようなコマンドが記述されています。

TRAP ON error
   ...       "Body of program and normal exit commands
RETURN 
error:
   ...       "Error-handling and exit commands
SIGNAL PRGERR

例10-158 連鎖の最後でのプログラム・エラー・メッセージの生成

ネストしたプログラムの連鎖の最後にエラー・メッセージを生成するには、NOPRINTキーワードを指定したTRAP文を使用します。ネストしたプログラムでエラーが発生すると、実行はトラップ・ラベルに分岐しますが、エラー・メッセージは生成されません。

トラップ・ラベルでは、内容を問わず必要なエラー処理コマンドを実行し、環境をリストアします。その後、次のSIGNAL文を実行します。

SIGNAL ERRORNAME ERRORTEXT

このSIGNAL文には、ERRORNAMEとERRORTEXTが指定されています。ERRORNAMEオプションには、元のエラーの名前が記録され、ERRORTEXTオプションには、元のエラーのエラー・メッセージが記録されています。コール側のプログラムにトラップ・ラベルがあると、プログラムの実行はこのラベルに分岐します。その結果、元のエラー名とエラー・テキストは、SIGNAL文によってコール側のプログラムに渡されます。

ネストしたプログラムの連鎖内の各プログラムがTRAPコマンドおよびSIGNALコマンドをこのように使用する場合、元のエラー・メッセージはプログラムの連鎖の最後に生成されます。各プログラムには、次のようなコマンドが記述されています。

TRAP ON error NOPRINT
   ...       "Body of program and normal exit commands
RETURN
error:
   ...       "Error-handling and exit commands
SIGNAL ERRORNAME ERRORTEXT