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
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