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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für