次の方法で共有


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 Int64Nullable<Int64>
[バイナリ] SqlBytesSqlBinary Byte[]
bit SqlBoolean BooleanNullable<Boolean>
char なし なし
cursor なし なし
date SqlDateTime DateTimeNullable<DateTime>
datetime SqlDateTime DateTimeNullable<DateTime>
datetime2 なし DateTimeNullable<DateTime>
datetimeoffset を する None DateTimeOffsetNullable<DateTimeOffset>
decimal SqlDecimal DecimalNullable<Decimal>
float SqlDouble DoubleNullable<Double>
geography SqlGeography 1 なし
geometry SqlGeometry 1 なし
hierarchyid SqlHierarchyId 1 なし
image なし なし
int SqlInt32 Int32Nullable<Int32>
money SqlMoney DecimalNullable<Decimal>
nchar SqlCharsSqlString StringChar[]
ntext なし なし
numeric SqlDecimal DecimalNullable<Decimal>
nvarchar SqlCharsSqlString

SQLChars はデータ転送とアクセスに適しており、SQLStringString 操作の実行に適しています。
StringChar[]
nvarchar(1), nchar(1) SqlCharsSqlString CharStringChar[]Nullable<char>
real (ただし、 の範囲は実際の超えています) SingleNullable<Single>
rowversion なし Byte[]
smallint SqlInt16 Int16Nullable<Int16>
smallmoney SqlMoney DecimalNullable<Decimal>
sql_variant なし Object
テーブル なし なし
text なし なし
time なし TimeSpanNullable<TimeSpan>
timestamp なし なし
tinyint SqlByte ByteNullable<Byte>
uniqueidentifier SqlGuid GuidNullable<Guid>
ユーザー定義型 (UDT) なし 同じアセンブリまたは依存アセンブリ内のユーザー定義型にバインドされている同じクラス
varbinary SqlBytesSqlBinary Byte[]
varbinary(1), binary(1) SqlBytesSqlBinary byteByte[]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 データ型の