Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Trata um objeto de um tipo base específico como um objeto do tipo derivado especificado.
Sintaxe
TREAT ( expression as type)
Argumentos
expression Qualquer expressão de consulta válida que retorna uma entidade.
Observação
O tipo da expressão especificada deve ser um subtipo do tipo de dados especificado ou o tipo de dados deve ser um subtipo do tipo de expressão.
type Um tipo de entidade. O tipo deve ser qualificado por um namespace.
Observação
A expressão especificada deve ser um subtipo do tipo de dados especificado ou o tipo de dados deve ser um subtipo da expressão.
Valor de retorno
Um valor do tipo de dados especificado.
Observações
O TREAT é usado para executar o upcasting entre classes relacionadas. Por exemplo, se Employee deriva de Person e p é do tipo Person, TREAT(p AS NamespaceName.Employee) upcasts uma instância genérica Person para Employee; ou seja, permite que você trate p como Employee.
O TREAT é usado em cenários de herança em que você pode fazer uma consulta como a seguinte:
SELECT TREAT(p AS NamespaceName.Employee)
FROM ContainerName.Person AS p
WHERE p IS OF (NamespaceName.Employee)
Essa consulta upcasts entidades Person para o Employee tipo. Se o valor de p não for realmente do tipo Employee, a expressão produzirá o valor null.
Observação
A expressão Employee especificada deve ser um subtipo do tipo Personde dados especificado ou o tipo de dados deve ser um subtipo da expressão. Caso contrário, a expressão resultará em um erro de tempo de compilação.
A tabela a seguir mostra o comportamento de tratamento sobre alguns padrões típicos e alguns padrões menos comuns. Todas as exceções são geradas do lado do cliente antes que o provedor seja invocado:
| Padrão | Comportamento |
|---|---|
TREAT (null AS EntityType) |
Retorna DbNull. |
TREAT (null AS ComplexType) |
Gera uma exceção. |
TREAT (null AS RowType) |
Gera uma exceção/ |
TREAT (EntityType AS EntityType) |
Retorna EntityType ou null. |
TREAT (ComplexType AS ComplexType) |
Gera uma exceção. |
TREAT (RowType AS RowType) |
Gera uma exceção. |
Exemplo
A consulta SQL de entidade a seguir usa o operador TREAT para converter um objeto do tipo Course em uma coleção de objetos do tipo OnsiteCourse. A consulta é baseada no modelo de escola.
SELECT VALUE TREAT (course AS SchoolModel.OnsiteCourse)
FROM SchoolEntities.Courses AS course
WHERE course IS OF( SchoolModel.OnsiteCourse)