ISOF (entitets-SQL)
Avgör om typen av uttryck är av den angivna typen eller någon av dess undertyper.
Syntax
expression IS [ NOT ] OF ( [ ONLY ] type )
Argument
expression
Ett giltigt frågeuttryck för att fastställa typen av.
Inte negerar EDM. Booleskt resultat av IS OF.
ENDAST Anger att IS OF endast returnerar true
om expression
är av typen type
och inte någon av dess undertyper.
type
Den typ som ska testas expression
mot. Typen måste vara namnområdeskvalificerad.
Returvärde
true
om expression
är av typen T och T antingen är en bastyp eller en härledd typ av type
; null om expression
är null vid körning, annars . false
Kommentarer
Uttrycken expression IS NOT OF (type)
och expression IS NOT OF (ONLY type)
är syntaktiskt likvärdiga med NOT (expression IS OF (type))
respektive NOT (expression IS OF (ONLY type))
.
I följande tabell visas beteendet för IS OF
operatorn över vissa typiska mönster och hörnmönster. Alla undantag genereras från klientsidan innan providern anropas:
Mönster | Funktionssätt |
---|---|
null IS OF (EntityType) | Kastar |
null IS OF (ComplexType) | Kastar |
null IS OF (RowType) | Kastar |
TREAT (null AS EntityType) IS OF (EntityType) | Returnerar DBNull |
TREAT (null AS ComplexType) IS OF (ComplexType) | Kastar |
TREAT (null SOM RowType) ÄR AV (RowType) | Kastar |
EntityType IS OF (EntityType) | Returnerar sant/falskt |
ComplexType IS OF (ComplexType) | Kastar |
RowType ÄR AV (RowType) | Kastar |
Exempel
Följande entitets-SQL-fråga använder IS OF-operatorn för att fastställa typen av ett frågeuttryck och använder sedan TREAT-operatorn för att konvertera ett objekt av typen Kurs till en samling objekt av typen OnsiteCourse. Frågan baseras på skolmodellen.
[!code-sql[DP EntityServices Concepts#TREAT_ISOF]~/samples/snippets/tsql/VS_Snippets_Data/dp entityservices concepts/tsql/entitysql.sql#treat_isof)]