リファレンスガイド> TDV SQLスクリプト> SQL言語の概念> CURRENT_EXCEPTIONの属性
 
CURRENT_EXCEPTIONの属性
SQLスクリプトでは、例外ハンドラー内で例外の属性を取得できます。
詳細については、以下も参照してください。
SQLスクリプトの例外
例外の発生と処理
外部例外
例外の宣言
構文
CURRENT_EXCEPTION.<attribute>
備考
次の表で、カーソルの例外属性について説明します。
属性
説明
NAME
例外の名前である文字列。この名前は、次のように完全修飾されています。
/ns1/ns2/procedure.s1.s2.exceptionName
ns1とns2は、パスの名前空間エレメントです。 s1とs2は複合ステートメントブロックであり、そのブロックのラベルに従って名前が付けられるか、unnamed#として名前が付けられます。# は整数値です。
ID
例外のシステムIDである整数。すべてのユーザー例外のIDは-1(負の値)です。システム例外はすべて一意のIDを持っています。
MESSAGE
現在の例外に対して定義されたVARCHAR(255)値。例外に値が定義されていない場合、この属性はNULLです。
TRACE
定義されたVARCHAR(32768)値には、例外スタックトレースが文字列として含まれています。
例外ハンドラーに複合ステートメントが含まれている場合、BEGIN部分のCURRENT_EXCEPTIONは親スコープの現在の例外を参照しますが、子スコープの例外ハンドラー部分のCURRENT_EXCEPTIONはローカル例外を参照し、親例外にアクセスする方法はありません。 。詳細については、複合ステートメントを参照してください。
PROCEDURE p (IN x INTEGER, OUT result VARCHAR)
BEGIN
  CALL /shared/f(x);
EXCEPTION
  ELSE
    IF CURRENT_EXCEPTION.MESSAGE IS NOT NULL THEN
      SET result = CURRENT_EXCEPTION.MESSAGE;
    ELSE
      SET result = CURRENT_EXCEPTION.NAME;
  END
END
 
MESSAGE:      'x must be > 0. x = -123'
NAME:             '/shared/f.illegal_arg_ex'
SQLスクリプトの例外
以下は、スローされる可能性のあるSQLスクリプト例外のリストです。渡されるメッセージは、SQLスクリプトの作成者に残されます。
例外メッセージ
説明
CouldExecuteSelectException
SELECTステートメントを実行しようとしました。 SELECTステートメントは開かれ、実行されません。 INSERT、UPDATE、およびDELETEステートメントが実行されます。
CouldOpenCursorException
NULL参照変数であるか、すでに閉じられている現在のプロシージャー内で定義されていないカーソルであるカーソルを開こうとしました。
CouldOpenNonSelectException
INSERT、UPDATE、またはDELETEステートメントを開こうとしました。 INSERT、UPDATE、およびDELETEステートメントは実行されますが、開かれません。 SELECTステートメントが開かれます。
CursorAlreadyOpenException
すでに開いているカーソルを開こうとしました。
CursorNotOpenException
閉じているカーソルからフェッチしたり、カーソルを閉じたり、閉じているPIPEに挿入したり閉じたりしようとします。
CursorTypeMismatchException
動的SQLを使用してカーソルを開こうとしましたが、SQLからの射影がカーソルのタイプ定義と一致しません。
DuplicateNameException
何かに名前を付けようとしましたが、その名前はすでに使用されています。
EvaluationException
式の評価中にエラーが発生しました。
IllegalArgumentException
引数が不正な値でプロシージャに渡されます。
IllegalStateException
予期しない状態が発生したため、プロシージャはタスクを実行できません。
NotAllowedException
ポリシーの制限またはその他の制限のために許可されていないタスクを実行しようとしました。
NotFoundException
存在しないリソースまたはその他のアイテムを使用しようとしました。
NotSupportedException
サポートされていない機能を使用しようとしました。
NullVariableException
NULL変数のデータメンバーにアクセスしようとしました。たとえば、現在NULLであるROW変数のデータメンバーにアクセスするには。
ParseException
動的SQLステートメントは、正しく解析または解決できません。これは、構文エラー、または存在しない列、テーブル、プロシージャ、または関数への参照が原因である可能性があります。
PipeNotOpenException
すでに閉じられているパイプに挿入または閉じようとします。
ProcedureClosedException
呼び出し元または管理者によって中止されたため、システムによってプロシージャが強制的に閉じられました。
ProtocolException
データプロトコルの処理エラーが原因でタスクが失敗します。
SecurityException
適切な権限なしでアクションを実行しようとしました。
SystemException
ランタイムで一般的な障害が発生しました
TransactionClosedException
トランザクションがコミットまたはロールバックされた後、トランザクションタスク(カーソルからのフェッチなど)を実行しようとします。
TransactionFailureException
トランザクション障害が発生します。
UnexpectedRowCountException
カーソルに予期しない数の行が返されます。たとえば、SELECT INTOステートメントでは、カーソルが正確に1行を返す必要があります。
UnopenedCursorReturnedException
未開封のカーソルがプロシージャから返されます。カーソルはNULLであるか、返されるときに開いている必要があります。
SOAPFaultException
WebサービスからSOAP障害が返されます。