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

前
 
次
 

SIGNAL

SIGNALコマンドは、プログラム内部からユーザー定義のエラー・メッセージを生成します。TRAPがオンのときにOracle OLAPによってSIGNAL文が実行されると、実行はトラップ・ラベルに分岐します。そして、プログラム内のトラップ・ラベルに続く文が実行されます。プログラムにアクティブなトラップ・ラベルがある場合、プログラムの実行はそのラベルに分岐します。トラップ・ラベルがない場合、プログラムの実行は終了し、そのプログラムが他のプログラムによってコールされていた場合は、コール側プログラムに実行の制御が戻ります。

構文

SIGNAL {errname [message]|STOP}

パラメータ

errname

生成されるエラー・メッセージの名前を示すTEXT式。errnameは、SIGNAL文の実行時にOracle OLAPによってERRORNAMEオプションに格納されます。通常、エラーの名前はエラー・メッセージに表示されません。ただし、messageを省略すると、message引数に示すストック・メッセージとともにエラー名(errname)が表示されます。

特別な名前PRGERRを使用すると、エラーが発生したコール側プログラムと通信できます。SIGNAL PRGERR文は、ERRORNAMEを空白値に設定し、別のエラー・メッセージを表示せずにエラー状態をコール側プログラムに渡します。ネストしたプログラムの連鎖をさかのぼってSIGNALでエラーを渡す方法については、TRAPコマンドを参照してください。

message

生成するエラー・メッセージを指定するTEXT式。長い行のエラー・メッセージを作成する場合、自分で改行を追加してテキストを書式設定する必要があります。各行の終わりに改行のエスケープ・シーケンス(\n)を入力します。入力できるテキストは、最大で6行または4,000文字のいずれか先に達した方です。1行で4,000文字を超過するテキストを入力しようとすると、エラーが発生します。

この引数を省略すると、SIGNALは次のメッセージを生成します。

ERROR: (errname) Please contact the administrator of your
   Oracle Oracle OLAP application.

messageは、SIGNAL文の実行時にOracle OLAPによってERRORTEXTオプションに格納されます。

STOP

現在実行しているすべてのプログラムの実行を即座に停止します。エラー・メッセージは生成されません。このエラー状態は、アクティブなTRAPラベルではトラップされません。

例10-123 エラーの通知

1つの引数を必要とするプログラムを記述したとします。引数を指定しないと、プログラムを実行する目的がなくなります。このため、最初にプログラムは引数が渡されたかどうかを確認します。引数が渡されていない場合、プログラムはエラー・メッセージを現行の出力ファイルに送信してから終了します。

次のプログラム行は、引数の有無を確認し、見つからない場合はエラーを通知します。

IF ARGS EQ ''
THEN SIGNAL msg1 'You must supply an argument.'

SIGNALは、次のメッセージを現行の出力ファイルに送信します。

ERROR: You must supply an argument.

例10-124 引数の値が無効な場合のエラーの通知

プログラムで、1から9か月までのデータを表示できるレポートを作成するとします。プログラムが9より大きな引数でコールされる場合、エラーを通知できます。この例では、nummonthsが、9より大きいとエラーになる引数の名前です。

select:
TRAP ON error
PUSH month
LIMIT month TO nummonths
IF STATLEN(month) GT 9
   THEN SIGNAL toomany -
     'You can specify no more than 9 months.'
REPORT DOWN district W 6 units
finish:
POP month
RETURN
error:
POP month
IF ERRORNAME EQ 'TOOMANY'
   THEN SHOW 'No report produced'