Zuordnen von CLR-Parameterdaten

Gilt für:SQL Server

In der folgenden Tabelle sind microsoft SQL Server-Datentypen, deren 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 Keine DateTimeOffset, Nullable<DateTimeOffset>
decimal Sqldecimal Dezimal, Nullable<dezimal>
float Sqldouble Double, Nullable<Double>
geography SqlGeography

SqlGeography ist in Microsoft.SqlServer.Types.dll definiert, das mit SQL Server installiert wird 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 wird und aus dem SQL Server Feature Pack heruntergeladen werden kann.
Keine
hierarchyid SqlHierarchyId

SqlHierarchyId ist in Microsoft.SqlServer.Types.dll definiert, die mit SQL Server installiert wird und aus dem SQL Server Feature Pack heruntergeladen werden kann.
Keine
image Keine Keine
int SqlInt32 Int32, Nullable<Int32>
money Sqlmoney Dezimal, Nullable<dezimal>
nchar SqlChars, SqlString String, Char[]
ntext Keine Keine
numeric Sqldecimal Dezimal, Nullable<dezimal>
nvarchar SqlChars, SqlString

SQLChars eignet sich besser für die Datenübertragung und den Zugriff, und SQLString eignet sich besser 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, Nullable<dezimal>
sql_variant Keine Object
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 aufrufende Programm zurückgeben, indem sie einen Eingabeparameter mit dem Out-Modifizierer (Microsoft Visual C#) oder <Out() ByRef (Microsoft Visual Basic)> markiert, wenn der Eingabeparameter ein CLR-Datentyp im System.Data.SqlTypes-Namespace ist und das aufrufende Programm den entsprechenden SQL Server Als Eingabeparameter erfolgt automatisch eine Typkonvertierung, wenn die CLR-Methode den Datentyp zurückgibt.

Die folgende gespeicherte CLR-Prozedur verfügt beispielsweise über einen Eingabeparameter des CLR-Datentyps SqlInt32, 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 der folgenden Transact-SQL-Instanz erstellt, die den SQL Server Datentyp 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 jedoch über einen out-Parameter automatisch in die entsprechenden SQL Server Datentypen konvertiert werden. In der folgenden Tabelle werden diese Ausnahmen aufgeführt.

CLR-Datentyp (SQL Server) SQL Server-Datentyp
Dezimal SMALLMONEY
Sqlmoney SMALLMONEY
Dezimal 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