データ型の使用方法

次に、SQL Server Native Client ODBC ドライバと SQL Server で規定されるデータ型の使用方法を示します。

データ型

制限事項

日付リテラル

SQL_TYPE_TIMESTAMP 型の列 (SQL Server の datetime 型または smalldatetime 型) に格納されたときの日付リテラルの時刻値は、12:00:00.000 A.M です。

moneysmallmoney

money データ型と smallmoney データ型で意味があるのは整数部分のみです。SQL money 型のデータの小数部分がデータ型の変換中に切り捨てられた場合、SQL Server Native Client ODBC ドライバではエラーではなく警告を返します。

SQL_BINARY (NULL 値を許容)

SQL Server 6.0 以前のインスタンスに接続していて、SQL_BINARY 型の列で NULL 値が許容される場合、データ ソースに格納されているデータには 0 が埋め込まれません。このような列からデータを取得するとき、SQL Server Native Client ODBC ドライバではデータの右側の桁に 0 が埋め込まれます。ただし、連結など、SQL Server により実行される操作で作成されるデータには、このような埋め込みは行われません。

また、データを SQL Server 6.0 以前のインスタンスの列に格納するときに、そのデータが長すぎて列に収まりきらない場合、SQL Server はデータを右側から切り捨てます。

注意
SQL Server Native Client ODBC ドライバでは、SQL Server 6.5 以前のバージョンへの接続がサポートされます。

SQL_CHAR (切り捨て)

SQL Server 6.0 以前のインスタンスに接続し、データを SQL_CHAR 型の列に格納するときに、そのデータが長すぎて列に収まりきらない場合、SQL Server では警告を通知せずにデータを右側から切り捨てます。

注意
SQL Server Native Client ODBC ドライバでは、SQL Server 6.5 以前のバージョンへの接続がサポートされます。

SQL_CHAR (NULL 値を許容)

SQL Server 6.0 以前のインスタンスに接続していて、SQL_CHAR 型の列で NULL 値が許容される場合、データ ソースに格納されているデータには空白が埋め込まれません。このような列からデータを取得するとき、SQL Server Native Client ODBC ドライバではデータの右側の桁に空白が埋め込まれます。ただし、連結など、SQL Server により実行される操作で作成されるデータには、このような埋め込みは行われません。

注意
SQL Server Native Client ODBC ドライバでは、SQL Server 6.5 以前のバージョンへの接続がサポートされます。

SQL_LONGVARBINARY、SQL_LONGVARCHAR、SQL_WLONGVARCHAR

複数の行に影響を与える SQL_LONGVARBINARY データ型、SQL_LONGVARCHAR データ型、または SQL_WLONGVARCHAR データ型の列の (WHERE 句を使用した) 更新は、SQL Server 6.x 以降のインスタンスに接続しているときは完全にサポートされます。SQL Server 4.2x のインスタンスに接続していて、更新が複数の行に影響を与える場合は、S1000 エラー "部分的な挿入または更新です。text または image 列の挿入または更新に失敗しました。" が返されます。

注意
SQL Server Native Client ODBC ドライバでは、SQL Server 6.5 以前のバージョンへの接続がサポートされます。

文字列関数パラメータ

文字列関数の string_exp パラメータは、SQL_CHAR データ型または SQL_VARCHAR データ型であることが必要です。SQL_LONG_VARCHAR データ型はサポートされません。SQL_CHAR データ型と SQL_VARCHAR データ型の長さは最大 8,000 文字に制限されているので、count パラメータは 8,000 以下にする必要があります。

時刻リテラル

SQL_TIMESTAMP 型の列 (SQL Server の datetime データ型または smalldatetime データ型) に格納されたときの時刻リテラルの日付値は、January 1, 1900 です。

timestamp

timestamp 型の列に手動で挿入できるのは NULL 値のみです。ただし、timestamp 型の列は SQL Server により自動的に更新されるため、NULL 値は上書きされます。

tinyint

SQL Server tinyint データ型には、符号なしの値が格納されます。既定では、tinyint 型の列は SQL_C_UTINYINT データ型の変数にバインドされます。

別名データ型

SQL Server 4.2x のインスタンスに接続している場合、ODBC ドライバでは、列の NULL 値の許容属性が明示的に宣言されていない列定義に NULL を追加します。したがって、別名データ型の定義に格納されている NULL 値の許容属性は無視されます。

SQL Server 4.2x のインスタンスに接続している場合、基本データ型として char または binary を持ち、NULL 値の許容属性を宣言していない別名データ型の列は、varchar データ型または varbinary データ型として作成されます。SQLColAttributeSQLColumns、および SQLDescribeCol では、これらの列のデータ型として SQL_VARCHAR または SQL_VARBINARY を返します。これらの列から取得するデータには、埋め込みは行われません。

注意
SQL Server Native Client ODBC ドライバでは、SQL Server 6.5 以前のバージョンへの接続がサポートされます。

LONG データ型

data-at-execution パラメータは、SQL_LONGVARBINARY データ型と SQL_LONGVARCHAR データ型の両方に制限されます。

大きな値型

SQL Server Native Client ODBC ドライバでは、varchar(max) データ型、varbinary(max) データ型、および nvarchar(max) データ型を、それぞれ SQL_VARCHAR、SQL_VARBINARY、および SQL_WVARCHAR として、ODBC SQL データ型のやり取りを行う API で公開します。

UDT (ユーザー定義型)

UDT 列は SQL_SS_UDT としてマップされます。SQL ステートメントで、UDT の ToString() メソッドまたは ToXMLString() メソッドを使用するか、CAST/CONVERT 関数を使用して UDT 列を明示的に別の型にマップする場合、結果セット内の列の型には変換された列の実際の型が反映されます。

SQL Server Native Client ODBC ドライバでは、UDT 列へはバイナリとしてのみバインドできます。SQL Server でサポートされるのは、SQL_SS_UDT データ型と SQL_C_BINARY データ型の間の変換のみです。

XML

SQL Server では、XML を Unicode テキストに自動的に変換します。XML 型は SQL_SS_XML としてマップされます。

関連項目

概念