Memetakan Data Parameter CLR

Berlaku untuk:SQL Server

Tabel berikut mencantumkan jenis data Microsoft SQL Server, yang setara dalam runtime bahasa umum (CLR) untuk SQL Server di namespace System.Data.SqlTypes, dan setara CLR aslinya di Microsoft .NET Framework.

Tipe data SQL Server Ketik (di System.Data.SqlTypes atau Microsoft.SqlServer.Types) Jenis data CLR (.NET Framework)
bigint SqlInt64 Int64, Nullable<Int64>
binary SqlBytes, SqlBinary Byte[]
bit SqlBoolean Boolean, Boolean Nullable<>
char Tidak ada Tidak ada
cursor Tidak ada Tidak ada
date SqlDateTime DateTime, DateTime Yang Dapat Diubah Ke Null<>
datetime SqlDateTime DateTime, DateTime Yang Dapat Diubah Ke Null<>
datetime2 Tidak ada DateTime, DateTime Yang Dapat Diubah Ke Null<>
DATETIMEOFFSET Tidak ada DateTimeOffset, DateTimeOffset Nullable<>
desimal SqlDecimal Desimal, Desimal Nullable<>
Float SqlDouble Double, Nullable<Double>
geografi SqlGeography

SqlGeography didefinisikan dalam Microsoft.SqlServer.Types.dll, yang diinstal dengan SQL Server dan dapat diunduh dari paket fitur SQL Server.
Tidak ada
geometri SqlGeometry

SqlGeometry didefinisikan dalam Microsoft.SqlServer.Types.dll, yang diinstal dengan SQL Server dan dapat diunduh dari paket fitur SQL Server.
Tidak ada
hierarchyid SqlHierarchyId

SqlHierarchyId didefinisikan dalam Microsoft.SqlServer.Types.dll, yang diinstal dengan SQL Server dan dapat diunduh dari paket fitur SQL Server.
Tidak ada
gambar Tidak ada Tidak ada
int SqlInt32 Int32, Nullable<Int32>
money SqlMoney Desimal, Desimal Nullable<>
nchar SqlChars, SqlString String, Char[]
ntext Tidak ada Tidak ada
numerik SqlDecimal Desimal, Desimal Nullable<>
nvarchar SqlChars, SqlString

SQLChars adalah kecocokan yang lebih baik untuk transfer dan akses data, dan SQLString adalah kecocokan yang lebih baik untuk melakukan operasi String.
String, Char[]
nvarchar(1), nchar(1) SqlChars, SqlString Karakter, String, Char[], Karakter nullable<>
nyata SqlSingle (rentang SqlSingle, namun, lebih besar dari nyata) Tunggal, Tunggal Yang Dapat Diubah Ke null<>
rowversion Tidak ada Byte[]
smallint SqlInt16 Int16, Nullable<Int16>
smallmoney SqlMoney Desimal, Desimal Nullable<>
aql_variant Tidak ada Object
tabel Tidak ada Tidak ada
teks Tidak ada Tidak ada
waktu Tidak ada Rentang Waktu, Rentang Waktu Yang Dapat Diubah Ke Null<>
timestamp Tidak ada Tidak ada
tinyint SqlByte Byte, Byte Nullable<>
uniqueidentifier SqlGuid Guid, Guid Nullable<>
Jenis yang ditentukan pengguna (UDT) Tidak ada Kelas yang sama yang terikat dengan jenis yang ditentukan pengguna dalam rakitan yang sama atau rakitan dependen.
varbinary SqlBytes, SqlBinary Byte[]
varbinary(1), biner(1) SqlBytes, SqlBinary byte, Byte[], Byte nullable<>
varchar Tidak ada Tidak ada
xml SqlXml Tidak ada

Konversi Tipe Data Otomatis dengan Parameter Keluar

Metode CLR dapat mengembalikan informasi ke kode atau program panggilan dengan menandai parameter input dengan pengubah keluar (Microsoft Visual C#) atau <Out()> ByRef (Microsoft Visual Basic) Jika parameter input adalah jenis data CLR di namespace System.Data.SqlTypes, dan program panggilan menentukan SQL Server yang setara jenis data sebagai parameter input, konversi jenis terjadi secara otomatis saat metode CLR mengembalikan jenis data.

Misalnya, prosedur tersimpan CLR berikut memiliki parameter input jenis data CLR SqlInt32 yang ditandai dengan keluar (C#) atau <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  

Setelah rakitan dibuat dan dibuat dalam database, prosedur tersimpan dibuat di SQL Server dengan Transact-SQL berikut, yang menentukan jenis data SQL Server int sebagai parameter OUTPUT:

CREATE PROCEDURE PriceSum (@sum int OUTPUT)  
AS EXTERNAL NAME TestStoredProc.StoredProcedures.PriceSum  

Ketika prosedur tersimpan CLR dipanggil, jenis data SqlInt32 secara otomatis dikonversi ke jenis data int , dan dikembalikan ke program panggilan.

Namun, tidak semua jenis data CLR dapat dikonversi secara otomatis ke jenis data SQL Server yang setara melalui parameter keluar. Tabel berikut mencantumkan pengecualian ini.

Jenis data CLR (SQL Server) Tipe data SQL Server
Desimal smallmoney
SqlMoney smallmoney
Desimal money
DateTime smalldatetime
SQLDateTime smalldatetime

Riwayat Perubahan

Konten yang diperbarui
Menambahkan jenis SqlGeography, SqlGeometry, dan SqlHierarchyId ke tabel pemetaan.

Lihat juga

SQL Server Tipe Data di .NET Framework