Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - プログラミング » SQL Anywhere データ・アクセス API » Sybase Open Client API » データ型マッピング

 

データ型マッピングの範囲制限

データ型によっては、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 データ型よりも、取り得る値の範囲が大きくなっています。