Partilhar via


Resolução de sobrecarga de função (Entity SQL)

Este tópico descreve como as funções do Entity SQL são resolvidas.

Mais de uma função pode ser definida com o mesmo nome, desde que as funções tenham assinaturas exclusivas.

Quando este é o caso, os seguintes critérios devem ser aplicados para determinar qual função é referenciada por uma determinada expressão. Estes critérios são aplicados em sequência. O primeiro critério que se aplica apenas a uma única função é a função resolvida.

  1. Número do parâmetro. A função tem o mesmo número de parâmetros especificados na expressão.

  2. Correspondência exata no tipo. Cada tipo de argumento da função corresponde exatamente ao tipo de parâmetro ou é o literal nulo.

  3. Corresponder no subtipo. Cada tipo de argumento da função corresponde exatamente ou é um subtipo do tipo de parâmetro, ou o argumento é o literal nulo. No caso de várias funções diferirem apenas no número de conversões de subtipo necessárias, a função com o menor número de conversões de subtipo é a função resolvida.

  4. Corresponder em subtipo ou promoção de tipo. Cada tipo de argumento da função corresponde exatamente, é um subtipo de, ou pode ser promovido para o tipo de parâmetro, ou o argumento é o literal nulo. Novamente, no caso de várias funções diferirem apenas no número de conversões e promoções de subtipo, a função com o menor número de conversões e promoções de subtipo é a função resolvida.

Se nenhum desses critérios resultar na seleção de uma única função, a expressão de invocação da função será ambígua.

Mesmo que uma única função possa ser extraída usando essas regras, os argumentos ainda podem não corresponder aos parâmetros. Neste caso, é gerado um erro.

Para funções definidas pelo usuário, a definição de uma função de consulta embutida tem precedência mesmo quando existe uma função definida pelo modelo com uma assinatura que é uma melhor correspondência para a função definida pelo usuário.

Consulte também