• 検索結果がありません。

データ型によって異なる Null の扱い

ドキュメント内 Microsoft Word - FRONT3.DOC (ページ 39-42)

ODBC Interface では、Scalable SQL と Btrieve のデータ型が ODBC SQL のデータ型にマップされます。次に、Scalable SQL と Btrieve のデータ型 の一覧と、それらに対応するマップされた Scalable SQL と Btrieve の

ODBC データ型を示します。

SQL エンジンのバージョンによって異なるサポートされるデータ型

ODBC Interface では、接続時に使用されている SQL エンジンでサポート され てい るす べて のデ ータ 型を サポ ート しま す。 バッ クエ ンド とし て Scalable SQL v3.01 エンジンを使っているときは、UNSIGNED BINARY を 除く Btrieve のデータ型がすべてサポートされます。また、Scalable SQL v4.0 バックエンドでは、Btrieve のデータ型がすべてサポートされます。

Scalable SQL v4.0 エンジンでは、v3.01 エンジンによってサポートされて いるものに加えて、いくつかの新しいデータ型がサポートされています。

データ型によって異なる Null の扱い

Scalable SQL/Btrieve のデータ型の中には、値として Null をとらないもの があります。たとえば、WHERE COL1 IS NULL のような条件句を使って いるときに COL1 が Null 値をとらないデータ型である場合、このテスト は False と評価されてしまいます。Null 値をとらないデータ型のカラムを テストするときは、WHERE および HAVING 句で IS NULL または IS

NOT NULL を使わずに、特定の値または特定の値の範囲を使ってください。

表 2-2

Scalable SQL/Btrieve のデータ型と ODBC のデータ型の対応

Scalable SQL/Btrieve のデータ型

ODBCのデータ型 CREATE TABLEの パラメータ

Null値をとるか どうか

AUTOINC(2) SQL_SMALLINT AUTOINC(2) いいえ

AUTOINC(4) SQL_INTEGER AUTOINC(4) いいえ

BFLOAT(4) SQL_REAL BFLOAT(4) いいえ

BFLOAT(8) SQL_DOUBLE BFLOAT(8) いいえ

BIT SQL_BIT なし いいえ

Scalable SQL/Btrieve のデータ型

ODBCのデータ型 CREATE TABLEの パラメータ

Null値をとるか どうか

CHAR

(Btrieve では STRING)

SQL_CHAR 最大長 はい

CURRENCY* SQL_BIGINT CURRENCY はい

DATE SQL_DATE なし はい

DECIMAL SQL_DECIMAL 精度、スケール はい

FLOAT(4) SQL_REAL FLOAT(4) いいえ

FLOAT(8) SQL_FLOAT または

SQL_DOUBLE

FLOAT(8) いいえ

INT(1) SQL_TINYINT INT(1) いいえ

INT(2) SQL_SMALLINT INT(2) いいえ

INT(4) SQL_INTEGER INT(4) いいえ

INT(8)* SQL_BIGINT INT(8) いいえ

LOGICAL(1) SQL_BIT LOGICAL(1) いいえ

LOGICAL(2) SQL_SMALLINT LOGICAL(2)

LSTRING SQL_VARCHAR 最大長 はい

LVAR SQL_LONGVARBINARY 最大長 いいえ

MONEY SQL_DECIMAL 精度 はい

NOTE SQL_LONGVARCHAR 最大長 いいえ

NUMERIC SQL_NUMERIC 精度、スケール はい

NUMERICSA

(Btrieve では NUMERIC SIGNED ASCII)

SQL_NUMERIC 精度、スケール はい

NUMERICSTS

(Btrieve では NUMERIC SIGNED TRAILING SEPARATE)

SQL_NUMERIC 精度、スケール はい

TIME SQL_TIME なし いいえ

TIMESTAMP* SQL_TIMESTAMP タイムスタンプの精度 はい

UNSIGNED(1)* SQL_TINYINT UNSIGNED(1) いいえ

UNSIGNED(2)* SQL_SMALLINT UNSIGNED(2) いいえ

UNSIGNED(4)* SQL_INTEGER UNSIGNED(4) いいえ

UNSIGNED(8)* SQL_BIGINT UNSIGNED(8) いいえ

ZSTRING SQL_VARCHAR 最大長 はい

この表でアスタリスク (*) が表示されているデータ型は、Scalable SQL v4.0 エンジンによる接続時に だけ使用することができます。

『Microsoft ODBC 2.0プログラマーズリファレンス&SDKガイド』の「付録 D」で 説明されているすべての変換が、この表にあげた ODBC SQL のデータ型に対して サポートされています。

ODBC での AUTOINC データ型のインプリメンテーション

AUTOINC 型は SQL_INTEGER および SQL_SMALLINT 型にマップされ ますが、AUTOINC フィールドは、INSERT および UPDATE ステートメ ントに関して、Scalable SQL と Btrieve のもとで特殊な処理を必要としま す。ゼロ値を挿入すると、そのフィールドの行には一意の値が挿入されま す。一方、ゼロでない値は、テーブル内のそのフィールドに現れる値と重 複 し な い か ぎ り 、 そ の ま ま 挿 入 さ れ ま す 。Scalable SQL が AUTOINC フィールドに対し一意の値を挿入するのは AUTOINC フィールドがキーと して定義されている場合だけです。

符号付き整数として扱われるにもかかわらず、一種の 15 ビットまたは 31 ビットの符号なし整数として動作することによって、AUTOINC 型は絶対 値として照合されます。そのため、データベースのユーザは、選択を目的 として、負の値を一種のビットフラグとして使用することができます。値 を負の値に変更するには、UPDATE ステートメントを使用します。

NOTE および LVAR データ型の使い方

Scalable SQL および Btrieve では、データ型が NOTE または LVAR の フィールドは、1 つのテーブルまたはビューにつき 1 つだけ許容されます。

このフィールドは、つねに CREATE TABLE ステートメントで定義される 最後のフィールドであり、SELECT リストで一覧にされる最後のフィール ドでなければなりません。

注意

この章では、ODBC Interface とともに ODBC API を使ってプログラミング を行う方法について説明します。次に、この章の内容を示します。

ドキュメント内 Microsoft Word - FRONT3.DOC (ページ 39-42)