Verwenden und Ändern von Instanzen von benutzerdefinierten Typen
Aktualisiert: 05. Dezember 2005
Es gibt folgende Möglichkeiten, um mit benutzerdefinierten Typen zu arbeiten:
- Erstellen von Tabellen mit Spalten eines benutzerdefinierten Typs
- Einfügen und Ändern der Spaltenwerte von benutzerdefinierten Typen
- Verwenden eines benutzerdefinierten Typs als Variable oder Parameter
Erstellen von Tabellen mit Spalten eines benutzerdefinierten Typs
Sie können eine Tabelle mit Spalten eines benutzerdefinierten Typs erstellen, indem Sie einen Spaltennamen angeben und dann auf den Typnamen verweisen. Dieses Verfahren ähnelt dem Erstellen von Spalten, die aus systembasierten Datentypen oder Aliastypen bestehen. Wenn Sie eine Spalte für einen CLR-benutzerdefinierten Typ (Common Language Runtime) erstellen möchten, müssen Sie die REFERENCES-Berechtigung für den Typ besitzen.
So erstellen Sie eine Tabelle mit Spalten eines benutzerdefinierten Typs
Einfügen und Ändern der Spaltenwerte von benutzerdefinierten Typen
Sie können Spaltenwerte einfügen und ändern sowie die Werte von Variablen und Parametern des benutzerdefinierten Typs ändern.
Hinweis: |
---|
Benutzerdefinierte Typen können nicht mehr geändert werden, nachdem sie erstellt wurden, da die Daten in den Tabellen oder Indizes durch Änderungen ungültig werden könnten. Wenn Sie einen Typ ändern möchten, müssen Sie den Typ löschen und dann neu erstellen oder eine ALTER ASSEMBLY-Anweisung mithilfe der WITH UNCHECKED DATA-Klausel ausgeben. Weitere Informationen finden Sie unter ALTER ASSEMBLY (Transact-SQL). |
Sie können Werte für Spalten mit benutzerdefiniertem Typ einfügen oder ändern, indem Sie folgendermaßen vorgehen:
Bereitstellen eines Wertes in einem SQL Server-Systemdatentyp, vorausgesetzt, der benutzerdefinierte Typ unterstützt die implizite oder explizite Konvertierung aus diesem Typ. Im folgenden Beispiel wird gezeigt, wie Sie einen Wert in einer Spalte des benutzerdefinierten Typs
Point
durch explizites Konvertieren aus einer Zeichenfolge aktualisieren:UPDATE Cities SET Location = CONVERT(Point, '12.3:46.2') WHERE Name = 'Anchorage'
Aufrufen einer Methode des benutzerdefinierten Typs, die als mutator markiert ist, um die Aktualisierung auszuführen. Das folgende Beispiel ruft eine Mutatormethode vom Typ point namens
SetXY
auf, die den Status der Instanz des Typs aktualisiert:UPDATE Cities SET Location.SetXY(23.5, 23.5) WHERE Name = 'Anchorage'
Hinweis: SQL Server gibt einen Fehler zurück, wenn eine mutator-Methode für einen NULL-Wert von Transact-SQL aufgerufen wird oder wenn ein neuer von einer mutator-Methode generierter Wert null ist. Ändern des Wertes einer Eigenschaft oder eines öffentlichen Feldes des benutzerdefinierten Typs. Der Ausdruck, der den Wert bereitstellt, muss implizit in den Typ der Eigenschaft konvertiert werden können. Im folgenden Beispiel wird der Wert der
X
-Eigenschaft des benutzerdefinierten Typs point geändert:UPDATE Cities SET Location.X = 23.5 WHERE Name = 'Anchorage'
Wenn Sie verschiedene Eigenschaften derselben Spalte mit benutzerdefiniertem Typ ändern möchten, geben Sie mehrere UPDATE-Anweisungen aus, oder rufen Sie eine mutator-Methode des Typs auf.
Das folgende Beispiel fügt Werte des Typs Point
in die Tabelle ein:
INSERT INTO Cities (Name, Location)
VALUES ('Anchorage', CONVERT(Point, '23.5, 23.5'))
So fügen Sie den Wert eines benutzerdefinierten Typs in eine Tabelle oder Sicht ein
- INSERT (Transact-SQL)
- So aktualisieren Sie den Wert eines benutzerdefinierten Typs in einer Tabelle oder Sicht
Verwenden eines benutzerdefinierten Typs als Variable oder Parameter
Sie können eine Transact-SQL-Variable oder den Parameter einer Transact-SQL- oder Microsoft .NET Framework-Funktion oder -Prozedur als benutzerdefinierten Typ deklarieren. Dabei gelten die folgenden Regeln:
- Sie müssen EXECUTIVE-Berechtigungen für diesen Typ besitzen.
- Wenn Sie eine Funktion, eine gespeicherte Prozedur oder einen Trigger erstellen, die bzw. der eine benutzerdefinierte Typdeklaration mit Schemabindung enthält, müssen Sie die REFERENCES-Berechtigung für den Typ besitzen.
Wenn Sie einen einteiligen Namen verwenden, sucht SQL Server den Typverweis in der folgenden Reihenfolge:
- Im Schema des aktuellen Benutzers in der aktuellen Datenbank.
- Im dbo-Schema in der aktuellen Datenbank.
- Im systemeigenen Typbereich.
So deklarieren Sie einen benutzerdefinierten Typ als Transact-SQL-Variable oder -Parameter einer Funktion oder Prozedur
Einschränkungen der Verwendung benutzerdefinierter Typen
Wenn Sie benutzerdefinierte Typen erstellen und mit diesen arbeiten, beachten Sie Folgendes:
- Sie können keine Länge, Dezimalstellen, Genauigkeit oder andere Metadaten definieren, wenn Sie einen benutzerdefinierten Typ in SQL Server erstellen.
- Spalten, Variablen oder Parameter können nicht als benutzerdefinierter Typ deklariert werden, der in einer anderen Datenbank definiert ist. Weitere Informationen finden Sie unter Datenbankübergreifendes Verwenden benutzerdefinierter Datentypen.
- Wenn Sie bestimmen möchten, ob ein benutzerdefinierter Typ identisch mit einem zuvor definierten Typ ist, vergleichen Sie nicht die Typ-ID, da diese nur für die Lebensdauer des benutzerdefinierten Typs gültig ist und ggf. erneut verwendet wird. Vergleichen Sie stattdessen den CLR-Typnamen, den vierteiligen Assemblynamen und die Assemblybytes.
- sql_variant-Spalten können keine Instanzen eines benutzerdefinierten Typs enthalten.
- Benutzerdefinierte Typen können nicht als Standardwerte in CLR-Prozeduren, -Funktionen oder -Triggern oder in Partitionsfunktionen verwendet werden.
- In berechneten Spalten von table-Variablen kann nicht auf benutzerdefinierte Typen verwiesen werden.
Siehe auch
Konzepte
Arbeiten mit CLR-benutzerdefinierten Typen
Andere Ressourcen
Hilfe und Informationen
Informationsquellen für SQL Server 2005
Änderungsverlauf
Version | Verlauf |
---|---|
05. Dezember 2005 |
|