オーバーフローと切捨て

処理の内容によっては、データがオーバーフローするかまたは切り捨てられる場合があります。オーバーフローはエラーになり、Infが生成される場合があります。切り捨ての場合、重要ではないデータが失われます。

INSERTまたはUPDATE文を使用して、正確な値をデータベースに保存する際、目的の列のスケールがその値より小さい場合にかぎり、切捨てが行われます。このような切捨てが行われた場合、警告が戻されます。オーバーフローのため値が収まらない場合は、特別な値Infが戻され、指定した値は挿入されません。

TimesTenでは、計算中、値がデータベースに挿入されるとき、またはデータベースの値が更新されるときに、近似値の切捨てを行うことがあります。INSERTまたはUPDATEに対してのみエラーが戻されます。近似値がオーバーフローした場合は、特別な値Infが戻されます。

次のような場合に、オーバーフローが発生します。

  • 算術演算時、積算の結果の値がその型で使用できる最大値より大きい場合に、オーバーフローが発生することがあります。詳細は、「式」を参照してください。

  • 集計関数の使用時に、複数の数値の合計が結果の型で使用できる最大値を超えると、オーバーフローが発生することがあります。

  • 型変換時に、たとえばTT_INTEGER値がTT_SMALLINT値に変換されると、オーバーフローが発生することがあります。

次のように、英数字または数値データ型では、切捨てによってエラーまたは警告が発生する場合があります。

  • 文字データで、文字列がターゲット型には長すぎるために切り捨てられると、エラーが発生します。NCHAR型およびNVARCHAR2型では、Unicode文字境界で常に切捨てが行われます。NCHARデータ型では、シングルバイト値(Unicode文字の半分)には意味がなく、使用できません。

  • 数値データで、数値の小数部から後続の0(ゼロ)以外の数字が削除されると、警告が発生します。