Compartilhar via


Resolução de sobrecarga de função (SQL da entidade)

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

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

Quando esse for o caso, os critérios a seguir devem ser aplicados para determinar qual função é referenciada por uma determinada expressão. Esses 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. Caso várias funções diferem 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 ao subtipo ou à promoção de tipo. Cada tipo de argumento da função corresponde exatamente, é um subtipo ou pode ser promovido ao tipo de parâmetro ou o argumento é o literal nulo. Novamente, caso várias funções diferem apenas no número de conversões e promoções de sub-tipo, 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 em uma única função sendo selecionada, a expressão de invocação de função será ambígua.

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

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 correspondência melhor para a função definida pelo usuário.

Consulte também