對應 CLR 參數數據
適用於:SQL Server
下表列出Microsoft SQL Server 數據類型、其在 System.Data.SqlTypes 命名空間中 SQL Server 的 Common Language Runtime (CLR) 對等專案,以及其在 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、Nullable<Double> |
地理位置 | SqlGeography SqlGeography 定義於 Microsoft.SqlServer.Types.dll 中,該 dll 是隨 SQL Server 一起安裝的,而且可以從 SQL Server 功能套件下載。 |
無 |
幾何 | SqlGeometry SqlGeometry 定義於 Microsoft.SqlServer.Types.dll 中,該 dll 是隨 SQL Server 一起安裝的,而且可以從 SQL Server 功能套件下載。 |
無 |
hierarchyid | SqlHierarchyId SqlHierarchyId 定義於 Microsoft.SqlServer.Types.dll 中,該 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[]、可為 Null 的<字元> |
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), 二進位(1) | SqlBytes、SqlBinary | byte、Byte[]、可為 Null 的<位元組> |
varchar | 無 | 無 |
xml | SqlXml | 無 |
使用 Out 參數自動轉換數據類型
CLR 方法可以使用 out 修飾詞 (Microsoft Visual C#) 或 <Out()> By Microsoft Ref 來傳回呼叫程式代碼或程序的資訊;如果輸入參數是 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 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應