共用方式為


對應 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 中建立,它會將 intSQL 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 數據類型