次の方法で共有


CLR パラメーター データのマッピング

適用対象: SQL サーバー

次の表に、Microsoft SQL Server のデータ型、 System.Data.SqlTypes の SQL Server の共通言語ランタイム (CLR)、 名前空間の共通言語ランタイムにおけるデータ型、および Microsoft .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 なし DateTimeOffset、Nullable<DateTimeOffset>
decimal SqlDecimal Decimal、Nullable<Decimal>
float SqlDouble Double、Nullable<Double>
geography SqlGeography

SqlGeography は、sql Server と共にインストールされ、SQL Server feature パックからダウンロードできるMicrosoft.SqlServer.Types.dllで定義
なし
geometry SqlGeometry

SqlGeometry は、SQL Server と共にインストールされ、SQL Server feature パックからダウンロードできるMicrosoft.SqlServer.Types.dllで定義
なし
hierarchyid SqlHierarchyId

SqlHierarchyId は、SQL Server と共にインストールされ、SQL Server feature pack からダウンロードできるMicrosoft.SqlServer.Types.dllで定義されています。
なし
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 ( SqlSingle の範囲は、 現実よりも大きい) 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>
User-defined type(UDT) なし 同じアセンブリまたは依存アセンブリ内のユーザー定義型にバインドされている同じクラス
varbinary SqlBytes、SqlBinary Byte[]
varbinary(1) binary(1) SqlBytes、SqlBinary byte、Byte[]、Nullable<byte>
varchar なし なし
xml SqlXml なし

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

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

たとえば、次の CLR ストアド プロシージャには、 SqlInt32 out (C#) または <Out()> ByRef (Visual Basic) でマークされている 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  

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

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

変更履歴

変更内容
SqlGeographySqlGeometry、および SqlHierarchyId 型をマッピング テーブルに追加しました。

参照

.NET Framework での SQL Server データ型