Teilen über


Zuordnen von CLR-Parameterdaten

Gilt für: SQL Server

In der folgenden Tabelle sind Microsoft SQL Server-Datentypen, ihre Entsprechungen in der Common Language Runtime (CLR) für SQL Server im System.Data.SqlTypes-Namespace und deren native CLR-Entsprechungen im Microsoft .NET Framework aufgeführt.

SQL Server-Datentyp Typ (in System.Data.SqlTypes oder Microsoft.SqlServer.Types) CLR-Datentyp (.NET Framework)
bigint SqlInt64 Int64, Nullable<Int64>
binary SqlBytes, SqlBinary Byte[]
bit SqlBoolean Boolean, Nullable<Boolean>
char Keine Keine
Cursor Keine Keine
date SqlDateTime DateTime, Nullable<DateTime>
datetime SqlDateTime DateTime, Nullable<DateTime>
datetime2 Keine DateTime, Nullable<DateTime>
DATETIMEOFFSET None DateTimeOffset, Nullable<DateTimeOffset>
decimal SqlDecimal Dezimal, Nullwerte dezimal<>
float SqlDouble Double, Nullable<Double>
geography SqlGeography

SqlGeography ist in Microsoft.SqlServer.Types.dll definiert, die mit SQL Server installiert ist und aus dem SQL Server-Feature pack heruntergeladen werden kann.
Keine
geometry SqlGeometry

SqlGeometry ist in Microsoft.SqlServer.Types.dll definiert, die mit SQL Server installiert ist und aus dem SQL Server-Feature pack heruntergeladen werden kann.
Keine
hierarchyid SqlHierarchyId

SqlHierarchyId wird in Microsoft.SqlServer.Types.dll definiert, die mit SQL Server installiert ist und aus dem SQL Server-Featurepaket heruntergeladen werden kann.
Keine
Abbildung Keine Keine
int SqlInt32 Int32, Nullable<Int32>
money SqlMoney Dezimal, Nullwerte dezimal<>
nchar SqlChars, SqlString String, Char[]
ntext Keine Keine
numeric SqlDecimal Dezimal, Nullwerte dezimal<>
nvarchar SqlChars, SqlString

SQLChars ist eine bessere Übereinstimmung für die Datenübertragung und den Zugriff, und SQLString ist eine bessere Übereinstimmung für die Ausführung von Zeichenfolgenvorgängen.
String, Char[]
nvarchar(1), nchar(1) SqlChars, SqlString Char, String, Char[], Nullable<char>
real SqlSingle (der Bereich von SqlSingle ist jedoch größer als real) Single, Nullable<Single>
rowversion Keine Byte[]
smallint SqlInt16 Int16, Nullable<Int16>
smallmoney SqlMoney Dezimal, Nullwerte dezimal<>
sql_variant Keine Objekt
Tabelle Keine Keine
text Keine Keine
time Keine TimeSpan, Nullable<TimeSpan>
timestamp Keine Keine
tinyint SqlByte Byte, Nullable<Byte>
uniqueidentifier SqlGuid Guid, Nullable<Guid>
Benutzerdefinierter Typ(UDT) Keine Dieselbe Klasse, die in derselben Assembly oder einer abhängigen Assembly an den benutzerdefinierten Typ gebunden ist.
varbinary SqlBytes, SqlBinary Byte[]
varbinary(1), binary(1) SqlBytes, SqlBinary byte, Byte[], Nullable<byte>
varchar Keine Keine
xml SqlXml Keine

Automatische Datentypkonvertierung mit Out-Parametern

Eine CLR-Methode kann Informationen an den aufrufenden Code oder das Programm zurückgeben, indem sie einen Eingabeparameter mit dem Out modifier (Microsoft Visual C#) oder< Out() ByRef (Microsoft Visual Basic)> Markieren, wenn der Eingabeparameter ein CLR-Datentyp im System.Data.SqlTypes-Namespace ist, und das aufrufende Programm gibt den entsprechenden SQL Server-Datentyp als Eingabeparameter an, Eine Typkonvertierung erfolgt automatisch, wenn die CLR-Methode den Datentyp zurückgibt.

Die folgende gespeicherte CLR-Prozedur verfügt z. B. über einen Eingabeparameter des SqlInt32 CLR-Datentyps, der mit out (C#) oder< Out() ByRef (Visual Basic)> gekennzeichnet ist:

[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  

Nachdem die Assembly in der Datenbank erstellt und erstellt wurde, wird die gespeicherte Prozedur in SQL Server mit dem folgenden Transact-SQL-Code erstellt, der einen SQL Server-Datentyp von int als OUTPUT-Parameter angibt:

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

Wenn die gespeicherte CLR-Prozedur aufgerufen wird, wird der SqlInt32-Datentyp automatisch in einen Int-Datentyp konvertiert und an das aufrufende Programm zurückgegeben.

Nicht alle CLR-Datentypen können über einen Out-Parameter automatisch in ihre entsprechenden SQL Server-Datentypen konvertiert werden. In der folgenden Tabelle werden diese Ausnahmen aufgeführt.

CLR-Datentyp (SQL Server) SQL Server-Datentyp
Decimal smallmoney
SqlMoney SMALLMONEY
Decimal money
DateTime smalldatetime
SQLDateTime smalldatetime

Änderungsverlauf

Aktualisierter Inhalt
Die Typen "SqlGeography", "SqlGeometry" und "SqlHierarchyId" wurden der Zuordnungstabelle hinzugefügt.

Weitere Informationen

SQL Server-Datentypen in .NET Framework