Aracılığıyla paylaş


CLR parametre verilerini eşleme

Şunlar için geçerlidir: SQL Server

Aşağıdaki tabloda SQL Server veri türleri, bunların System.Data.SqlTypes ad alanında SQL Server için ortak dil çalışma zamanındaki (CLR) eşdeğerleri ve .NET Framework'teki yerel CLR eşdeğerleri listelenmektedir.

SQL Server veri türü Tür (System.Data.SqlTypes veya Microsoft.SqlServer.Types) CLR veri türü (.NET Framework)
bigint SqlInt64 Int64, Nullable<Int64>
İkili SqlBytes, SqlBinary Byte[]
bit SqlBoolean Boolean, Nullable<Boolean>
char Hiç kimse Hiç kimse
İmleç Hiç kimse Hiç kimse
tarih SqlDateTime DateTime, Nullable<DateTime>
datetime SqlDateTime DateTime, Nullable<DateTime>
datetime2 Hiç kimse DateTime, Nullable<DateTime>
datetimeoffset None DateTimeOffset, Nullable<DateTimeOffset>
ondalık SqlDecimal Decimal, Nullable<Decimal>
float SqlDouble Double, Nullable<Double>
coğrafya SqlGeography 1 Hiç kimse
geometri SqlGeometry 1 Hiç kimse
hierarchyid SqlHierarchyId 1 Hiç kimse
resim Hiç kimse Hiç kimse
int SqlInt32 Int32, Nullable<Int32>
para SqlMoney Decimal, Nullable<Decimal>
nchar SqlChars, SqlString String, Char[]
ntext Hiç kimse Hiç kimse
Sayısal SqlDecimal Decimal, Nullable<Decimal>
nvarchar SqlChars, SqlString

SQLChars, veri aktarımı ve erişim için daha iyi bir eşleşmedir ve SQLStringString işlemleri gerçekleştirmek için daha iyi bir eşleşmedir.
String, Char[]
nvarchar(1), nchar(1) SqlChars, SqlString Char, String, Char[], Nullable<char>
Gerçek (ancak, aralığı gerçekbüyüktür) Single, Nullable<Single>
Rowversion Hiç kimse Byte[]
smallint SqlInt16 Int16, Nullable<Int16>
smallmoney SqlMoney Decimal, Nullable<Decimal>
sql_variant Hiç kimse Object
tablo Hiç kimse Hiç kimse
Metin Hiç kimse Hiç kimse
saat Hiç kimse TimeSpan, Nullable<TimeSpan>
zaman damgası Hiç kimse Hiç kimse
tinyint SqlByte Byte, Nullable<Byte>
uniqueidentifier SqlGuid Guid, Nullable<Guid>
Kullanıcı tanımlı tür (UDT) Hiç kimse Aynı derlemede veya bağımlı bir derlemede kullanıcı tanımlı türe bağlı olan aynı sınıf.
varbinary SqlBytes, SqlBinary Byte[]
varbinary(1), ikili(1) SqlBytes, SqlBinary byte, Byte[], Nullable<byte>
varchar Hiç kimse Hiç kimse
xml SqlXml Hiç kimse

1 SQL Server ile yüklenen veSQL Server özellik paketinden indirilebilen içinde tanımlanmıştır.

Çıkış parametreleriyle otomatik veri türü dönüştürme

CLR yöntemi, giriş parametresini out değiştirici (C#) veya <Out()> ByRef (Visual Basic .NET) ile işaretleyerek çağrı koduna veya programına bilgi döndürebilir. Giriş parametresi System.Data.SqlTypes ad alanında bir CLR veri türüyse ve çağıran program giriş parametresi olarak eşdeğer SQL Server veri türünü belirtiyorsa, CLR yöntemi veri türünü döndürdüğünde otomatik olarak bir tür dönüştürmesi gerçekleşir.

Örneğin, aşağıdaki CLR saklı yordamında out (C#) veya <Out()> ByRef (Visual Basic) ile işaretlenmiş SqlInt32 CLR veri türünde bir giriş parametresi vardır:

  • C#
  • Visual Basic .NET
[Microsoft.SqlServer.Server.SqlProcedure]
public static void PriceSum(out SqlInt32 value)
{ ... }

Derleme veritabanında derlenip oluşturulduktan sonra, saklı yordam SQL Server'da aşağıdaki Transact-SQL ile oluşturulur ve bu, OUTPUT parametresi olarak int SQL Server veri türünü belirtir:

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

CLR saklı yordamı çağrıldığında, SqlInt32 veri türü otomatik olarak bir int veri türüne dönüştürülür ve çağıran programa döndürülür.

Ancak tüm CLR veri türleri, out parametresi aracılığıyla otomatik olarak eşdeğer SQL Server veri türlerine dönüştürülemez. Aşağıdaki tabloda bu özel durumlar listelemektedir.

CLR veri türü (SQL Server) SQL Server veri türü
Decimal smallmoney
SqlMoney smallmoney
Decimal para
DateTime smalldatetime
SQLDateTime smalldatetime
  • .NET Framework SQL Server veri türlerini