Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Behandelt ein Objekt eines bestimmten Basistyps als Objekt des angegebenen abgeleiteten Typs.
Syntax
TREAT ( expression as type)
Argumente
expression Ein beliebiger gültiger Abfrageausdruck, der eine Entität zurückgibt.
Hinweis
Der Typ des angegebenen Ausdrucks muss ein Untertyp des angegebenen Datentyps sein, oder der Datentyp muss ein Untertyp des Ausdruckstyps sein.
type Ein Entitätstyp. Der Typ muss durch einen Namespace qualifiziert werden.
Hinweis
Der angegebene Ausdruck muss ein Untertyp des angegebenen Datentyps sein, oder der Datentyp muss ein Untertyp des Ausdrucks sein.
Rückgabewert
Ein Wert des angegebenen Datentyps.
Bemerkungen
TREAT wird verwendet, um eine Upcasting zwischen verwandten Klassen durchzuführen. Wenn z. BEmployee. eine Ableitung von Person und p vom Typ Personist, TREAT(p AS NamespaceName.Employee) wird eine generische Instanz von Employeeeiner generischen Person Instanz erstellt, d. h. es ermöglicht Ihnen, p als Employeezu behandeln.
TREAT wird in Vererbungsszenarien verwendet, in denen Sie eine Abfrage wie die folgenden ausführen können:
SELECT TREAT(p AS NamespaceName.Employee)
FROM ContainerName.Person AS p
WHERE p IS OF (NamespaceName.Employee)
Mit dieser Abfrage werden Entitäten auf den Employee Typ umgestaltetPerson. Wenn der Wert von p nicht tatsächlich vom Typ Employeeist, gibt der Ausdruck den Wert zurück null.
Hinweis
Der angegebene Ausdruck Employee muss ein Untertyp des angegebenen Datentyps Personsein, oder der Datentyp muss ein Untertyp des Ausdrucks sein. Andernfalls führt der Ausdruck zu einem Kompilierungszeitfehler.
Die folgende Tabelle zeigt das Verhalten der Behandlung einiger typischer Muster und weniger gängiger Muster. Alle Ausnahmen werden von der Clientseite ausgelöst, bevor der Anbieter aufgerufen wird:
| Muster | Verhalten |
|---|---|
TREAT (null AS EntityType) |
Gibt DbNull zurück. |
TREAT (null AS ComplexType) |
Löst eine Ausnahme aus. |
TREAT (null AS RowType) |
Löst eine Ausnahme aus/ |
TREAT (EntityType AS EntityType) |
Gibt einen EntityType oder null zurück. |
TREAT (ComplexType AS ComplexType) |
Löst eine Ausnahme aus. |
TREAT (RowType AS RowType) |
Löst eine Ausnahme aus. |
Beispiel
Die folgende Entity SQL-Abfrage verwendet den TREAT-Operator, um ein Objekt vom Typ "Course" in eine Auflistung von Objekten des Typs "OnsiteCourse" zu konvertieren. Die Abfrage basiert auf dem Schulmodell.
SELECT VALUE TREAT (course AS SchoolModel.OnsiteCourse)
FROM SchoolEntities.Courses AS course
WHERE course IS OF( SchoolModel.OnsiteCourse)