CLR パラメーター データのマッピング
適用対象:SQL Server
次の表は、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、Null 許容<Int64> |
[バイナリ] | SqlBytes、SqlBinary | Byte[] |
bit | SqlBoolean | Boolean、Null 許容<ブール値> |
char | なし | なし |
cursor | なし | なし |
date | Sqldatetime | DateTime、Null 許容<DateTime> |
datetime | Sqldatetime | DateTime、Null 許容<DateTime> |
datetime2 | なし | DateTime、Null 許容<DateTime> |
DATETIMEOFFSET | なし | DateTimeOffset、Null 許容<DateTimeOffset> |
decimal | SqlDecimal | Decimal、Null 許容<10 進数> |
float | SqlDouble | Double、Null 許容<倍精度浮動小数点型 (Double)> |
geography | SqlGeography SqlGeography は、SQL Serverと共にインストールされ、SQL Server機能パックからダウンロードできるMicrosoft.SqlServer.Types.dllで定義されています。 |
なし |
geometry | SqlGeometry SqlGeometry は、SQL Serverと共にインストールされ、SQL Server機能パックからダウンロードできるMicrosoft.SqlServer.Types.dllで定義されています。 |
なし |
hierarchyid | SqlHierarchyId SqlHierarchyId は Microsoft.SqlServer.Types.dll で定義され、SQL Serverと共にインストールされ、SQL Server機能パックからダウンロードできます。 |
なし |
image | なし | なし |
int | SqlInt32 | Int32、Null 許容<Int32> |
money | Sqlmoney | Decimal、Null 許容<10 進数> |
nchar | SqlChars、SqlString | String, Char[] |
ntext | なし | なし |
numeric | SqlDecimal | Decimal、Null 許容<10 進数> |
nvarchar | SqlChars、SqlString SQLChars はデータ転送とアクセスに適しており、 SQLString は文字列操作の実行に適しています。 |
String, Char[] |
nvarchar(1), nchar(1) | SqlChars、SqlString | Char、String、Char[]、Null 許容<char> |
real | SqlSingle (ただし、 SqlSingle の範囲は 実際よりも大きい) | Single、Nullable<Single> |
rowversion | なし | Byte[] |
smallint | SqlInt16 | Int16、Null 許容<Int16> |
smallmoney | Sqlmoney | Decimal、Null 許容<10 進数> |
sql_variant | なし | Object |
テーブル | なし | なし |
text | なし | なし |
time | なし | TimeSpan、Null 許容<TimeSpan> |
timestamp | なし | なし |
tinyint | SqlByte | Byte、Null 許容<バイト> |
uniqueidentifier | Sqlguid | Guid、Null 許容<Guid> |
User-defined type(UDT) | なし | 同じアセンブリまたは依存アセンブリ内のユーザー定義型にバインドされている同じクラス |
varbinary | SqlBytes、SqlBinary | Byte[] |
varbinary(1)、binary(1) | SqlBytes、SqlBinary | byte、Byte[]、Null 許容<バイト> |
varchar | なし | なし |
xml | Sqlxml | なし |
out パラメーターによるデータ型の自動変換
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 に作成され、次の Transact-SQL が使用されます。これは、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 のデータ型 |
---|---|
10 進数 | smallmoney |
Sqlmoney | smallmoney |
10 進数 | money |
DateTime | smalldatetime |
Sqldatetime | smalldatetime |
変更履歴
変更内容 |
---|
マッピング テーブルに SqlGeography、SqlGeometry、および SqlHierarchyId 型を追加しました。 |
参照
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示