オーバーフローと切捨て
処理の内容によっては、データがオーバーフローするかまたは切り捨てられる場合があります。オーバーフローはエラーになり、Infが生成される場合があります。切り捨ての場合、重要ではないデータが失われます。
INSERTまたはUPDATE文を使用して、正確な値をデータベースに保存する際、目的の列のスケールがその値より小さい場合にかぎり、切捨てが行われます。このような切捨てが行われた場合、警告が戻されます。オーバーフローのため値が収まらない場合は、特別な値Infが戻され、指定した値は挿入されません。
TimesTenでは、計算中、値がデータベースに挿入されるとき、またはデータベースの値が更新されるときに、近似値の切捨てを行うことがあります。INSERTまたはUPDATEに対してのみエラーが戻されます。近似値がオーバーフローした場合は、特別な値Infが戻されます。
次のような場合に、オーバーフローが発生します。
-
算術演算時、積算の結果の値がその型で使用できる最大値より大きい場合に、オーバーフローが発生することがあります。詳細は、「式」を参照してください。
-
集計関数の使用時に、複数の数値の合計が結果の型で使用できる最大値を超えると、オーバーフローが発生することがあります。
-
型変換時に、たとえば
TT_INTEGER値がTT_SMALLINT値に変換されると、オーバーフローが発生することがあります。
次のように、英数字または数値データ型では、切捨てによってエラーまたは警告が発生する場合があります。
-
文字データで、文字列がターゲット型には長すぎるために切り捨てられると、エラーが発生します。
NCHAR型およびNVARCHAR2型では、Unicode文字境界で常に切捨てが行われます。NCHARデータ型では、シングルバイト値(Unicode文字の半分)には意味がなく、使用できません。 -
数値データで、数値の小数部から後続の0(ゼロ)以外の数字が削除されると、警告が発生します。