SQL Server データ型と .NET Framework データ型の対応

更新 : 2005 年 12 月 5 日

次の表は、Microsoft SQL Server データ型と、それぞれに対応する System.Data.SqlTypes 名前空間の SQL Server CLR (共通言語ランタイム) データ型および Microsoft .NET Framework のネイティブ CLR データ型を示します。

SQL Server データ型

CLR データ型 (SQL Server)

CLR データ型 (.NET Framework)

varbinary

SqlBytes, SqlBinary

Byte[]

binary

SqlBytes, SqlBinary

Byte[]

varbinary(1), binary(1)

SqlBytes, SqlBinary

byte, Byte[]

image

なし

なし

varchar

なし

なし

char

なし

なし

nvarchar(1), nchar(1)

SqlChars, SqlString

Char, String, Char[]

nvarchar

SqlChars, SqlString

SQLChars はデータの転送とアクセスに適しています。また、SQLString は文字列操作に適しています。

String, Char[]

nchar

SqlChars, SqlString

String, Char[]

text

なし

なし

ntext

なし

なし

uniqueidentifier

SqlGuid

Guid

rowversion

なし

Byte[]

bit

SqlBoolean

Boolean

tinyint

SqlByte

Byte

smallint

SqlInt16

Int16

int

SqlInt32

Int32

bigint

SqlInt64

Int64

smallmoney

SqlMoney

Decimal

money

SqlMoney

Decimal

numeric

SqlDecimal

Decimal

decimal

SqlDecimal

Decimal

real

SqlSingle

Single

float

SqlDouble

Double

smalldatetime

SqlDateTime

DateTime

datetime

SqlDateTime

DateTime

sql_variant

なし

Object

User-defined type(UDT)

なし

同じアセンブリまたは依存アセンブリ内のユーザー定義型にバインドされている同じクラス

table

なし

なし

cursor

なし

なし

timestamp

なし

なし

xml

SqlXml

なし

out パラメータによるデータ型の自動変換

CLR メソッドでは、入力パラメータを out 修飾子 (Microsoft Visual C#) または <Out()> ByRef (Microsoft Visual Basic) でマークすることにより、呼び出し側のコードまたはプログラムに情報を返すことができます。System.Data.SqlTypes 名前空間での入力パラメータが CLR データ型で、呼び出し側のプログラムがこれと同等な SQL Server データ型を入力パラメータとして指定する場合、CLR メソッドがデータ型を返すと、自動的に型の変換が行われます。

たとえば、次の CLR ストアド プロシージャには、out (C#) または <Out()> ByRef (Visual Basic) でマークされている SqlInt32 CLR データ型の入力パラメータがあります。

C#

   [Microsoft.SqlServer.Server.SqlProcedure]
   public static void PriceSum(out SqlInt32 value)
   { … }

Visual Basic

    <Microsoft.SqlServer.Server.SqlProcedure> _

Public Shared Sub PriceSum( <Out()> ByRef value As SqlInt32)

End Sub

データベースでアセンブリがビルドおよび作成された後、SQL Server では、OUTPUT パラメータとして int の SQL Server データ型を指定する、次の Transact-SQL によりストアド プロシージャが作成されます。

CREATE PROCEDURE PriceSum (@sum int OUTPUT)
AS EXTERNAL NAME TestStoredProc.StoredProcedures.PriceSum

CLR ストアド プロシージャが呼び出されると、SqlInt32 データ型は自動的に int データ型に変換され、呼び出し側のプログラムに返されます。

ただし、out パラメータにより自動的にすべての CLR データ型を同等な SQL Server データ型に変換できるとは限りません。次の表に、これらの例外を示します。

CLR データ型 (SQL Server)

SQL Server データ型

Decimal

smallmoney

SqlMoney

smallmoney

Decimal

money

DateTime

smalldatetime

SQLDateTime

smalldatetime

参照

その他の技術情報

.NET Framework での SQL Server データ型
データ型の変換 (データベース エンジン)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2005 年 12 月 5 日

新しい内容 :
  • 「out パラメータによるデータ型の自動変換」のセクションを追加しました。