Megosztás:


TREAT (Entity SQL)

Egy adott alaptípusú objektumot a megadott származtatott típus objektumaként kezel.

Szemantika

TREAT ( expression as type)

Érvek

expression Bármely érvényes lekérdezési kifejezés, amely egy entitást ad vissza.

Megjegyzés:

A megadott kifejezés típusának a megadott adattípus altípusának kell lennie, vagy az adattípusnak a kifejezés típusának altípusának kell lennie.

type Entitástípus. A típust névtérrel kell minősíteni.

Megjegyzés:

A megadott kifejezésnek a megadott adattípus altípusának kell lennie, vagy az adattípusnak a kifejezés altípusának kell lennie.

Visszaadott érték

A megadott adattípus értéke.

Megjegyzések

A TREAT a kapcsolódó osztályok közötti felcímkésítésre szolgál. Ha például abból Person származik, Employee és a p típusúPerson, TREAT(p AS NamespaceName.Employee) akkor egy általános Person példányt Employeead vissza ; vagyis lehetővé teszi a p mintaként Employeevaló kezelését.

A TREAT az öröklési forgatókönyvekben használatos, ahol az alábbihoz hasonló lekérdezéseket hajthat végre:

SELECT TREAT(p AS NamespaceName.Employee)
FROM ContainerName.Person AS p
WHERE p IS OF (NamespaceName.Employee)

Ez a lekérdezés az entitásokat Person a Employee típusra szórja. Ha a p értéke valójában nem típus Employee, akkor a kifejezés az értéket nulladja meg.

Megjegyzés:

A megadott kifejezésnek Employee a megadott adattípus Personaltípusának kell lennie, vagy az adattípusnak a kifejezés altípusának kell lennie. Ellenkező esetben a kifejezés fordítási időt eredményez.

Az alábbi táblázat a kezelés viselkedését mutatja be néhány tipikus és néhány kevésbé gyakori mintán. A rendszer minden kivételt az ügyféloldalról ad ki, mielőtt a szolgáltató meghívja:

Pattern Magatartás
TREAT (null AS EntityType) Visszatér DbNull.
TREAT (null AS ComplexType) Kivételt jelez.
TREAT (null AS RowType) Kivételt jelez/
TREAT (EntityType AS EntityType) Visszaadja EntityType vagy null.
TREAT (ComplexType AS ComplexType) Kivételt jelez.
TREAT (RowType AS RowType) Kivételt jelez.

példa

Az alábbi Entity SQL-lekérdezés a TREAT operátorral konvertálja a Course típusú objektumot onsiteCourse típusú objektumok gyűjteményére. A lekérdezés az iskolai modellen alapul.

SELECT VALUE TREAT (course AS SchoolModel.OnsiteCourse) 
   FROM SchoolEntities.Courses AS course
   WHERE course IS OF( SchoolModel.OnsiteCourse)

Lásd még