對應 CLR 參數資料

適用於:SQL Server

下表列出 Microsoft SQL Server資料類型、Common Language Runtime (CLR) 中適用于System.Data.SqlTypes命名空間中SQL Server的 Microsoft SQL Server,以及其在 Microsoft .NET Framework 中的原生 CLR 對等專案。

SQL Server 資料類型 類型 (在 System.Data.SqlTypes 或 Microsoft.SqlServer.Types 中) CLR 資料類型 (.NET Framework)
bigint SqlInt64 Int64、可為 Null 的 < Int64>
binary SqlBytes、SqlBinary Byte[]
bit SqlBoolean 布林值、可為 Null 的 < 布林值>
char
cursor
date SqlDateTime DateTime、可為 Null 的 < DateTime>
datetime SqlDateTime DateTime、可為 Null 的 < DateTime>
datetime2 DateTime、可為 Null 的 < DateTime>
DATETIMEOFFSET None DateTimeOffset、可為 Null 的 < DateTimeOffset>
decimal SqlDecimal 十進位、可為 < Null 的十進位數>
float SqlDouble Double、可為 Null 的雙精度浮點 < 數>
地理位置 SqlGeography

SqlGeography定義于 Microsoft.SqlServer.Types.dll 中,其會隨 SQL Server 一起安裝,而且可以從SQL Server功能套件下載。
幾何 SqlGeometry

SqlGeometry定義于 Microsoft.SqlServer.Types.dll,其會隨 SQL Server 一起安裝,而且可以從SQL Server功能套件下載。
hierarchyid SqlHierarchyId

SqlHierarchyId定義于 Microsoft.SqlServer.Types.dll 中,其會隨 SQL Server 一起安裝,而且可以從SQL Server功能套件下載。
image
int SqlInt32 Int32、可為 Null 的 < Int32>
money SqlMoney 十進位、可為 < Null 的十進位數>
nchar SqlChars、SqlString String, Char[]
ntext
numeric SqlDecimal 十進位、可為 < Null 的十進位數>
nvarchar SqlChars、SqlString

SQLChars 是資料傳輸和存取的較佳比對, 而 SQLString 是執行 String 作業的較佳比對。
String, Char[]
Nvarchar (1) ,Nchar (1) SqlChars、SqlString Char、String、Char[]、Nullable < char>
real 不過,SqlSingle (SqlSingle的範圍大於 實際) 單一、可為 < Null 的單一>
rowversion Byte[]
smallint SqlInt16 Int16、可為 Null 的 < Int16>
smallmoney SqlMoney 十進位、可為 < Null 的十進位數>
sql_variant Object
table
text
time TimeSpan、可為 < Null 的 TimeSpan>
timestamp
tinyint SqlByte 位元組、可為 Null 的 < 位元組>
uniqueidentifier SqlGuid Guid、可為 < Null 的 Guid>
使用者定義型別 (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 預存程式具有SqlInt32 CLR 資料類型的輸入參數,其標示為out (C#) 或< Out () > ByRef (Visual Basic) :

[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 資料類型,並傳回呼叫程式。

不過,並非所有 CLR 資料類型都可以透過 out 參數自動轉換成對等SQL Server資料類型。 下表列出這些例外。

CLR 資料類型 (SQL Server) SQL Server 資料類型
十進位 SMALLMONEY
SqlMoney SMALLMONEY
十進位 money
DateTime smalldatetime
SQLDateTime smalldatetime

變更記錄

更新的內容
已將 SqlGeographySqlGeometrySqlHierarchyId 類型新增至對應資料表。

另請參閱

.NET Framework 的 SQL Server 資料類型