Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Zachází s objektem konkrétního základního typu jako s objektem zadaného odvozeného typu.
Syntaxe
TREAT ( expression as type)
Argumenty
expression Libovolný platný výraz dotazu, který vrací entitu.
Poznámka:
Typ zadaného výrazu musí být podtyp zadaného datového typu nebo datový typ musí být podtyp typu výrazu.
type Typ entity. Typ musí být kvalifikovaný oborem názvů.
Poznámka:
Zadaný výraz musí být podtyp zadaného datového typu nebo datový typ musí být podtyp výrazu.
Návratová hodnota
Hodnota zadaného datového typu.
Poznámky
FUNKCE TREAT se používá k provádění přesměrování mezi souvisejícími třídami. Pokud je například odvozeno od Person a p je typu Person, TREAT(p AS NamespaceName.Employee) přetypuje obecnou Person instanci na Employee; to znamená, že umožňuje považovat p jako Employee.Employee
Funkce TREAT se používá ve scénářích dědičnosti, ve kterých můžete provádět dotaz podobný tomuto:
SELECT TREAT(p AS NamespaceName.Employee)
FROM ContainerName.Person AS p
WHERE p IS OF (NamespaceName.Employee)
Tento dotaz přetypuje Person entity na Employee typ. Pokud hodnota p není ve skutečnosti typu Employee, výraz získá hodnotu null.
Poznámka:
Zadaný výraz Employee musí být podtyp zadaného datového typu Personnebo datový typ musí být podtyp výrazu. V opačném případě výsledkem výrazu bude chyba v době kompilace.
Následující tabulka ukazuje chování léčby u některých typických vzorů a některých méně běžných vzorů. Všechny výjimky jsou vyvolány ze strany klienta před vyvolání zprostředkovatele:
| Vzor | Chování |
|---|---|
TREAT (null AS EntityType) |
Vrátí DbNull. |
TREAT (null AS ComplexType) |
Vyvolá výjimku. |
TREAT (null AS RowType) |
Vyvolá výjimku/ |
TREAT (EntityType AS EntityType) |
Vrátí EntityType nebo null. |
TREAT (ComplexType AS ComplexType) |
Vyvolá výjimku. |
TREAT (RowType AS RowType) |
Vyvolá výjimku. |
Příklad
Následující dotaz Entity SQL používá operátor TREAT k převodu objektu typu Course na kolekci objektů typu OnsiteCourse. Dotaz je založený na školním modelu.
SELECT VALUE TREAT (course AS SchoolModel.OnsiteCourse)
FROM SchoolEntities.Courses AS course
WHERE course IS OF( SchoolModel.OnsiteCourse)