更新 :
2008 年 10 月 31 日
次の表は、Microsoft SQL Server データ型と、それぞれに対応する System.Data.SqlTypes 名前空間の SQL Server CLR (共通言語ランタイム) データ型および Microsoft .NET Framework のネイティブ CLR データ型を示します。
|
SQL Server データ型
|
CLR データ型 (SQL Server)
|
CLR データ型 (.NET Framework)
|
|
bigint
|
SqlInt64
|
Int64, Nullable<Int64>
|
|
binary
|
SqlBytes, SqlBinary
|
Byte[]
|
|
bit
|
SqlBoolean
|
Boolean, Nullable<Boolean>
|
|
char
|
なし
|
なし
|
|
cursor
|
なし
|
なし
|
|
date
|
SqlDateTime
|
DateTime, Nullable<DateTime>
|
|
datetime
|
SqlDateTime
|
DateTime, Nullable<DateTime>
|
|
datetime2
|
SqlDateTime
|
DateTime, Nullable<DateTime>
|
|
DATETIMEOFFSET
|
None
|
DateTimeOffset, Nullable<DateTimeOffset>
|
|
decimal
|
SqlDecimal
|
Decimal, Nullable<Decimal>
|
|
float
|
SqlDouble
|
Double, Nullable<Double>
|
|
geography
|
SqlGeography
SqlGeography は、Microsoft.SqlServer.Types.dll に定義されています。この DLL は、SQL Server と共にインストールされ、SQL Server 2008 用の Feature Pack からダウンロードできます。
|
なし
|
|
geometry
|
SqlGeometry
SqlGeometry は、Microsoft.SqlServer.Types.dll に定義されています。この DLL は、SQL Server と共にインストールされ、SQL Server 2008 用の Feature Pack からダウンロードできます。
|
なし
|
|
hierarchyid
|
SqlHierarchyId
SqlHierarchyId は、Microsoft.SqlServer.Types.dll に定義されています。この DLL は、SQL Server と共にインストールされ、SQL Server 2008 用の Feature Pack からダウンロードできます。
|
なし
|
|
image
|
なし
|
なし
|
|
int
|
SqlInt32
|
Int32, Nullable<Int32>
|
|
money
|
SqlMoney
|
Decimal, Nullable<Decimal>
|
|
nchar
|
SqlChars, SqlString
|
String, Char[]
|
|
ntext
|
なし
|
なし
|
|
numeric
|
SqlDecimal
|
Decimal, Nullable<Decimal>
|
|
nvarchar
|
SqlChars, SqlString
SQLChars はデータの転送とアクセスに適しています。また、SQLString は文字列操作に適しています。
|
String, Char[]
|
|
nvarchar(1), nchar(1)
|
SqlChars, SqlString
|
Char, String, Char[], Nullable<char>
|
|
real
|
SqlSingle
|
Single, Nullable<Single>
|
|
rowversion
|
なし
|
Byte[]
|
|
smallint
|
SqlInt16
|
Int16, Nullable<Int16>
|
|
smallmoney
|
SqlMoney
|
Decimal, Nullable<Decimal>
|
|
sql_variant
|
なし
|
Object
|
|
table
|
なし
|
なし
|
|
text
|
なし
|
なし
|
|
time
|
TimeSpan
|
TimeSpan, Nullable<TimeSpan>
|
|
timestamp
|
なし
|
なし
|
|
tinyint
|
SqlByte
|
Byte, Nullable<Byte>
|
|
uniqueidentifier
|
SqlGuid
|
Guid, Nullable<Guid>
|
|
User-defined type(UDT)
|
なし
|
同じアセンブリまたは依存アセンブリ内のユーザー定義型にバインドされている同じクラス
|
|
varbinary
|
SqlBytes, SqlBinary
|
Byte[]
|
|
varbinary(1), binary(1)
|
SqlBytes, SqlBinary
|
byte, Byte[], Nullable<byte>
|
|
varchar
|
なし
|
なし
|
|
xml
|
SqlXml
|
なし
|
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 データ型の入力パラメータがあります。
[Microsoft.SqlServer.Server.SqlProcedure]
public static void PriceSum(out SqlInt32 value)
{ … }
<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 2008 の参考資料の入手
|
変更内容
|
|---|
|
マッピング テーブルに SqlGeography 型、SqlGeometry 型、および SqlHierarchyId 型を追加しました。
|