Share via


Clr-parametergegevens toewijzen

van toepassing op:SQL Server-

De volgende tabel bevat SQL Server-gegevenstypen, hun equivalenten in de COMMON Language Runtime (CLR) voor SQL Server in de System.Data.SqlTypes naamruimte en hun systeemeigen CLR-equivalenten in .NET Framework.

SQL Server-gegevenstype Typ (in System.Data.SqlTypes of Microsoft.SqlServer.Types) CLR-gegevenstype (.NET Framework)
grote SqlInt64 Int64, Nullable<Int64>
binaire SqlBytes, SqlBinary Byte[]
bit SqlBoolean Boolean, Nullable<Boolean>
teken Geen Geen
cursor Geen Geen
datum SqlDateTime DateTime, Nullable<DateTime>
datum/tijd- SqlDateTime DateTime, Nullable<DateTime>
datetime2- Geen DateTime, Nullable<DateTime>
datetimeoffset None DateTimeOffset, Nullable<DateTimeOffset>
decimale SqlDecimal Decimal, Nullable<Decimal>
float- SqlDouble Double, Nullable<Double>
geografie SqlGeography 1 Geen
geometrie SqlGeometry 1 Geen
hierarchyid- SqlHierarchyId 1 Geen
afbeelding Geen Geen
SqlInt32 Int32, Nullable<Int32>
geld SqlMoney Decimal, Nullable<Decimal>
SqlChars, SqlString String, Char[]
Geen Geen
numerieke SqlDecimal Decimal, Nullable<Decimal>
nvarchar- SqlChars, SqlString

SQLChars is een betere overeenkomst voor gegevensoverdracht en toegang, en SQLString is een betere overeenkomst voor het uitvoeren van String bewerkingen.
String, Char[]
nvarchar(1), nchar(1) SqlChars, SqlString Char, String, Char[], Nullable<char>
echte SqlSingle (het bereik van SqlSingle is echter groter dan echte) Single, Nullable<Single>
rowversion Geen Byte[]
kleine SqlInt16 Int16, Nullable<Int16>
smallmoney SqlMoney Decimal, Nullable<Decimal>
sql_variant Geen Object
tabel Geen Geen
tekst Geen Geen
tijd Geen TimeSpan, Nullable<TimeSpan>
tijdstempel Geen Geen
kleine SqlByte Byte, Nullable<Byte>
uniqueidentifier- SqlGuid Guid, Nullable<Guid>
Door de gebruiker gedefinieerd type (UDT) Geen Dezelfde klasse die is gebonden aan het door de gebruiker gedefinieerde type in dezelfde assembly of een afhankelijke assembly.
varbinaire SqlBytes, SqlBinary Byte[]
varbinary(1), binary(1) SqlBytes, SqlBinary byte, Byte[], Nullable<byte>
varchar- Geen Geen
xml-- SqlXml Geen

1 Gedefinieerd in Microsoft.SqlServer.Types.dll, die is geïnstalleerd met SQL Server en kan worden gedownload uit het sql Server-feature pack.

Automatische conversie van gegevenstypen met uitvoerparameters

Een CLR-methode kan informatie retourneren naar de aanroepende code of het programma door een invoerparameter te markeren met de out modifier (C#) of <Out()> ByRef (Visual Basic .NET). Als de invoerparameter een CLR-gegevenstype is in de System.Data.SqlTypes naamruimte en het aanroepende programma het equivalente SQL Server-gegevenstype opgeeft als invoerparameter, wordt automatisch een typeconversie uitgevoerd wanneer de CLR-methode het gegevenstype retourneert.

De volgende opgeslagen CLR-procedure heeft bijvoorbeeld een invoerparameter van SqlInt32 CLR-gegevenstype dat is gemarkeerd met out (C#) of <Out()> ByRef (Visual Basic):

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

Nadat de assembly is gemaakt en gemaakt in de database, wordt de opgeslagen procedure gemaakt in SQL Server met de volgende Transact-SQL, waarmee een SQL Server-gegevenstype van int als uitvoerparameter wordt opgegeven:

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

Wanneer de opgeslagen CLR-procedure wordt aangeroepen, wordt het SqlInt32 gegevenstype automatisch geconverteerd naar een int gegevenstype en geretourneerd naar het aanroepende programma.

Niet alle CLR-gegevenstypen kunnen automatisch worden geconverteerd naar hun equivalente SQL Server-gegevenstypen via een out parameter. De volgende tabel bevat deze uitzonderingen.

CLR-gegevenstype (SQL Server) SQL Server-gegevenstype
Decimal smallmoney
SqlMoney smallmoney
Decimal geld
DateTime smalldatetime-
SQLDateTime smalldatetime-