對應 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 |
變更記錄
更新的內容 |
---|
已將 SqlGeography、 SqlGeometry和 SqlHierarchyId 類型新增至對應資料表。 |
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應