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 に作成されます。このストアド プロシージャは、
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 |
変更履歴
変更内容 |
---|
SqlGeography、SqlGeometry、および SqlHierarchyId 型をマッピング テーブルに追加しました。 |