データ型によっては、SQL Anywhere と Open Client で範囲が異なります。このような場合には、データを検索または挿入するときにオーバフロー・エラーが発生することがあります。
次の表にまとめた Open Client アプリケーションのデータ型は、SQL Anywhere データ型にマッピングできますが、取り得る値の範囲に制限があります。
ほとんどの場合、Open Client データ型からマッピングする SQL Anywhere データ型の方が取り得る値の範囲が大きくなっています。その結果、SQL Anywhere に値を渡してデータベースに格納できます。ただし、大きすぎて Open Client アプリケーションがフェッチできない値は除きます。
データ型 | Open Client の最小値 | Open Client の最大値 | SQL Anywhere の最小値 | SQL Anywhere の最大値 |
---|---|---|---|---|
MONEY | -922 377 203 685 477.5808 | 922 377 203 685 477.5807 | -1e15 + 0.0001 | 1e15 - 0.0001 |
SMALLMONEY | -214 748.3648 | 214 748.3647 | -214 748.3648 | 214 748.3647 |
DATETIME | Jan 1, 1753 | Dec 31, 9999 | Jan 1, 0001 | Dec 31, 9999 |
SMALLDATETIME | Jan 1, 1900 | June 6, 2079 | March 1, 1600 | Dec 31, 7910 |
たとえば、Open Client の MONEY および SMALLMONEY データ型は、基本となる SQL Anywhere 実装の全数値範囲を超えることはありません。したがって、Open Client のデータ型 MONEY の境界を超える値を SQL Anywhere のカラムに設定できます。クライアントが SQL Anywhere 経由でそうした違反値をフェッチすると、エラーになります。
SQL Anywhere にタイムスタンプ値が渡された場合、Open Client の TIMESTAMP データ型の SQL Anywhere 実装は、Adaptive Server Enterprise の場合と異なります。SQL Anywhere の場合、その値は SQL Anywhere の DATETIME データ型にマッピングされます。SQL Anywhere では、デフォルト値は NULL であり、ユニークであることは保証されません。一方、Adaptive Server Enterprise では、単調に増加するユニークな値であることが保証されます。
一方、SQL Anywhere の TIMESTAMP データ型には、年、月、日、時、分、秒、秒未満が入ります。さらに、SQL Anywhere の DATETIME データ型は、SQL Anywhere によってマッピングされる Open Client データ型よりも、取り得る値の範囲が大きくなっています。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |