Dela via


Mappa CLR-parameterdata

gäller för:SQL Server

I följande tabell visas SQL Server-datatyper, deras motsvarigheter i CLR (Common Language Runtime) för SQL Server i System.Data.SqlTypes-namnområdet och deras interna CLR-motsvarigheter i .NET Framework.

SQL Server-datatyp Skriv (i System.Data.SqlTypes eller Microsoft.SqlServer.Types) CLR-datatyp (.NET Framework)
bigint SqlInt64 Int64, Nullable<Int64>
binär SqlBytes, SqlBinary Byte[]
bit SqlBoolean Boolean, Nullable<Boolean>
tecken Ingen Ingen
markören Ingen Ingen
datum SqlDateTime DateTime, Nullable<DateTime>
datetime SqlDateTime DateTime, Nullable<DateTime>
datetime2 Ingen DateTime, Nullable<DateTime>
datetimeoffset None DateTimeOffset, Nullable<DateTimeOffset>
decimal SqlDecimal Decimal, Nullable<Decimal>
flyttal SqlDouble Double, Nullable<Double>
geografi SqlGeography 1 Ingen
geometri SqlGeometry 1 Ingen
hierarchyid SqlHierarchyId 1 Ingen
bild Ingen Ingen
int SqlInt32 Int32, Nullable<Int32>
pengar SqlMoney Decimal, Nullable<Decimal>
nchar SqlChars, SqlString String, Char[]
ntext Ingen Ingen
numeriska SqlDecimal Decimal, Nullable<Decimal>
nvarchar SqlChars, SqlString

SQLChars är en bättre matchning för dataöverföring och åtkomst, och SQLString är en bättre matchning för att utföra String åtgärder.
String, Char[]
nvarchar(1), nchar(1) SqlChars, SqlString Char, String, Char[], Nullable<char>
riktiga SqlSingle (men intervallet för SqlSingle är större än verkliga) Single, Nullable<Single>
rowversion Ingen Byte[]
liten SqlInt16 Int16, Nullable<Int16>
smallmoney SqlMoney Decimal, Nullable<Decimal>
sql_variant Ingen Object
tabell Ingen Ingen
text Ingen Ingen
tid Ingen TimeSpan, Nullable<TimeSpan>
tidsstämpel Ingen Ingen
pytteliten SqlByte Byte, Nullable<Byte>
unikidentifierare SqlGuid Guid, Nullable<Guid>
Användardefinierad typ (UDT) Ingen Samma klass som är bunden till den användardefinierade typen i samma sammansättning eller en beroende sammansättning.
varbinary SqlBytes, SqlBinary Byte[]
varbinary(1), binary(1) SqlBytes, SqlBinary byte, Byte[], Nullable<byte>
varchar Ingen Ingen
XML- SqlXml Ingen

1 Definieras i Microsoft.SqlServer.Types.dll, som installeras med SQL Server och kan laddas ned från SQL Server funktionspaketet.

Automatisk datatypkonvertering med utdataparametrar

En CLR-metod kan returnera information till anropande kod eller program genom att markera en indataparameter med out-modifieraren (C#) eller <Out()> ByRef (Visual Basic .NET). Om indataparametern är en CLR-datatyp i System.Data.SqlTypes namnområde och det anropande programmet anger motsvarande SQL Server-datatyp som indataparameter, sker en typkonvertering automatiskt när CLR-metoden returnerar datatypen.

Följande CLR-lagrade procedur har till exempel en indataparameter av SqlInt32 CLR-datatyp som är markerad med out (C#) eller <Out()> ByRef (Visual Basic):

[Microsoft.SqlServer.Server.SqlProcedure]
public static void PriceSum(out SqlInt32 value)
{ ... }

När sammansättningen har skapats och skapats i databasen skapas den lagrade proceduren i SQL Server med följande Transact-SQL, som anger en SQL Server-datatyp av int som en OUTPUT-parameter:

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

När den lagrade CLR-proceduren anropas konverteras SqlInt32 datatyp automatiskt till en int datatyp och returneras till anropande program.

Alla CLR-datatyper kan dock inte automatiskt konverteras till motsvarande SQL Server-datatyper via en out parameter. I följande tabell visas dessa undantag.

CLR-datatyp (SQL Server) SQL Server-datatyp
Decimal smallmoney
SqlMoney smallmoney
Decimal pengar
DateTime smalldatetime
SQLDateTime smalldatetime