ヘッダーをスキップ

Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド リリース6.0 B25770-01 |
| 目次 | 索引

前へ | 次へ |

## オーバーフローと切り捨て

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

INSERTまたはUPDATE文を使用して、正確な値をデータ・ストアに保存する際、目的の列のスケールがその値より小さい場合にかぎり、切捨てが行われます。このような切捨てが行われた場合、警告が戻されます。オーバーフローのため値が納まらない場合は、エラーとなり値は挿入されません。たとえば、値1.234をDECIMAL(5,2)の列に挿入しようとしたり、列を値1.234で更新しようとすると、警告が戻されます。また、実際にその列に値1234を挿入するとエラーが発生します。

計算時、あるいはデータ・ストアに値を挿入したりデータ・ストアの値を更新する際、近似値が切り捨てられます。値の挿入または更新時に警告が戻されます。近似値がオーバーフローした場合、エラーが戻されます。

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

- 算術演算時: 乗算を実行した結果、そのデータ型が許容する最大値を超えた場合、オーバーフローが発生します。算術演算については、「式」を参照してください。
- 集計関数の使用時: 複数の値を合計した結果、その結果タイプが許容する最大値を超えた場合、オーバーフローが発生します。集計関数については、「式」を参照してください。
- データ型の変換時: INTEGERの値をSMALLINTの値に変換した場合、またはDOUBLEの値をINTEGERの値に変換した場合、除算（9/2=4）での切捨てと同様にオーバーフローが発生する可能性があります。データ型の変換については、「TimesTenの数値型」、「算術演算における日時型および時間隔型」、「値の比較」および「TimesTenの時間隔およびDATE/TIME型」を参照してください。

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

- 英数字データ: 対象のデータ型に対して長すぎる文字列を切り捨てた場合、エラーが発生します。NCHARとNVARCHAR型では、Unicode文字の境界において常に切り捨てが行われます。NCHARデータ型については、1バイトの値(Unicode文字の半分)は意味を持たないため、切り捨ては行われません。
- 数値データ: DOUBLEまたはDECIMALの値の小数部から後続の0（ゼロ）以外の数字を削除した場合、警告が発生します。