CLR パラメーター データのマップ

適用対象:SQL Server

次の表に、SQL Server のデータ型、System.Data.SqlTypes 名前空間の SQL Server の共通言語ランタイム (CLR) での同等のデータ型、および .NET Framework のネイティブ CLR データ型を示します。

SQL Server データ型 型 (System.Data.SqlTypes または Microsoft.SqlServer.Types) CLR データ型 (.NET Framework)
bigint SqlInt64 Int64、Nullable<Int64>
[バイナリ] SqlBytes、SqlBinary Byte[]
bit SqlBoolean Boolean、Nullable<Boolean>
char なし なし
cursor なし なし
date SqlDateTime DateTime、Nullable<DateTime>
datetime SqlDateTime DateTime、Nullable<DateTime>
datetime2 なし DateTime、Nullable<DateTime>
datetimeoffset を する None DateTimeOffset、Nullable<DateTimeOffset>
decimal SqlDecimal Decimal、Nullable<Decimal>
float SqlDouble Double、Nullable<Double>
geography SqlGeography 1 なし
geometry SqlGeometry 1 なし
hierarchyid SqlHierarchyId 1 なし
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 操作の実行に適しています。
String、Char[]
nvarchar(1), nchar(1) SqlChars、SqlString Char、 String、 Char[]、 Nullable<char>
real (ただし、 の範囲は実際の超えています) Single、Nullable<Single>
rowversion なし Byte[]
smallint SqlInt16 Int16、Nullable<Int16>
smallmoney SqlMoney Decimal、Nullable<Decimal>
sql_variant なし Object
テーブル なし なし
text なし なし
time なし TimeSpan、Nullable<TimeSpan>
timestamp なし なし
tinyint SqlByte Byte、Nullable<Byte>
uniqueidentifier SqlGuid Guid、Nullable<Guid>
ユーザー定義型 (UDT) なし 同じアセンブリまたは依存アセンブリ内のユーザー定義型にバインドされている同じクラス
varbinary SqlBytes、SqlBinary Byte[]
varbinary(1), binary(1) SqlBytes、SqlBinary byte、Byte[]、Nullable<byte>
varchar なし なし
xml SqlXml なし

1Microsoft.SqlServer.Types.dllで定義されています。これは SQL Server と共にインストールされ、SQL Server 機能パックからダウンロードできます。

出力パラメーターを使用したデータ型の自動変換

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

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

  • C# を する
  • Visual Basic .NET の
[Microsoft.SqlServer.Server.SqlProcedure]
public static void PriceSum(out SqlInt32 value)
{ ... }

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

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

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

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

CLR データ型 (SQL Server) SQL Server データ型
Decimal smallmoney
SqlMoney smallmoney
Decimal money
DateTime smalldatetime を する
SQLDateTime smalldatetime を する
  • .NET Framework での SQL Server データ型の