-802   EXCEPTION ERROR exception-type HAS OCCURRED DURING operation-type OPERATION ON data-type DATA, POSITION position-number

説明

SQL 算術関数または算術式の処理で、 例外エラーが発生しました。 例外エラーは、以下のいずれかの領域で発生しました。

  • SQL SELECT ステートメントの SELECT リストにおいて。
  • SELECT、UPDATE、MERGE、または DELETE ステートメントの検索条件において。
  • UPDATE 操作の SET 文節において。
  • 集約関数の計算中。

エラーの検出場所によっては、exception-typeoperation-typedata-type、 および position-number の一部が SQL 連絡域に戻されない場合があります。

exception-type
エラーのタイプを示します。

exception-type の値は次のとおりです。

  • FIXED POINT OVERFLOW
  • DECIMAL OVERFLOW
  • ZERO DIVIDE
  • DIVIDE EXCEPTION
  • EXPONENT OVERFLOW
  • INVALID OPERATION
  • SUBNORMAL
  • UNDERFLOW
  • OVERFLOW
  • OUT OF RANGE
operation-type
エラー発生時に実行されていた操作を示します。operation-type には、以下の算術演算が返されます。
  • ADDITION
  • SUBTRACTION
  • MULTIPLICATION
  • DIVISION
  • NEGATION

また、operation-type は、以下のいずれかの操作である可能性があります。

  • 組み込み関数
  • 集約関数
  • Java 変換
data-type
操作されている項目のデータ・タイプ。

data-type には以下のデータ・タイプが返されます。

  • BIGINT
  • INTEGER
  • SMALLINT
  • DECIMAL
  • FLOAT

メッセージに表示されるデータ・タイプは、データの一時的な内部コピーのデータ・タイプを示すことがあり、Db2® による変換のために実際の列またはリテラルのデータ・タイプとは違っていることがあります。

position-number
エラーの場所が外部の SELECT ステートメントの SELECT リスト内にあった場合は、SELECT リスト内の式の位置。

システムの処置

このステートメントを処理することはできません。 挿入または更新操作の場合、データの更新または削除は行われません。ステートメントがカーソル制御の FETCH であった場合は、集約関数の処理の間に 例外が発生しない限り (AGGREGATE FUNCTION の operation-type によって示される)、カーソルはオープンのままになります。例外が発生した場合、カーソルはクローズします。カーソルが クローズされて、その後そのカーソルに対する OPEN を行わずに使用とすると SQLCODE -501 が出されます。ステートメントがカーソル制御の OPEN である場合、カーソルはクローズされたままになります。

プログラマーの応答

SQL ステートメントを検査して、問題の原因を判別できるかどうかを調べてください。 問題がデータから生じていることがあります。その場合は、エラーの発生時に処理中であったデータを調べる必要があります。

エラーの算術式が、外部 SELECT ステートメントの SELECT リスト内にあった場合は、すべての式の標識変数を SELECT リストに含めることをお勧めします。 これにより、処理は継続し、したがってエラーでない列と式の値を戻すことができます。

数字データ・タイプの許容範囲については、SQLCODE -405 の説明を参照してください。

問題判別

固定小数点オーバーフローは、BIGINT、INTEGER または SMALLINT フィールドに算術演算を行っているときに起こることがあります。

除算例外は、10 進数の除算において、 商が指定されたデータ・フィールドのサイズを超えたときに起こることがあります。 ゼロ除算例外は、ゼロで除算を行った場合に起こります。

指数オーバーフローは、浮動小数点演算の結果の指数部が 127 を超え、 結果の小数部がゼロでない場合 (例えば、結果の絶対値が およそ 7.2E+75 を超える場合) に起こることがあります。

10 進オーバーフロー例外は、以下のいずれかの環境で起こる可能性があります。

  • 10 進演算の宛先フィールドが短すぎて 結果を収容しきれないため、1 つ以上の非ゼロの桁が失われている。
  • Java ストアード・プロシージャーまたは、ユーザー定義関数が 出力パラメーターに 10 進数値を設定したが、その精度または位取りが、値に対して小さすぎる。 operation-type は Java 変換です。data-type は DECIMAL です。 position-number は、CALL ステートメントまたはユーザー定義関数の呼び出しでどのパラメーターがエラーになったかを示します。

組み込み関数の処理中になんらかの例外あるいはオーバーフローが発生する場合があります。operation-type が FUNCTION である場合は、入力値、中間値、または最終値を処理中にエラーが発生しています。パラメーターの値が範囲外であるため、例外が発生することがあります。

SQLSTATE

ZERO DIVIDE ならば 22012。

ZERO DIVIDE 以外ならば 22003。