Partager via


Résolution de surcharge de fonction (Entity SQL)

Cette rubrique décrit comment les fonctions Entity SQL sont résolues.

Plusieurs fonctions peuvent être définies avec le même nom, tant que les fonctions ont des signatures uniques.

Dans ce cas, les critères suivants doivent être appliqués pour déterminer quelle fonction est référencée par une expression donnée. Ces critères sont appliqués en séquence. Le premier critère qui s’applique uniquement à une seule fonction est la fonction résolue.

  1. Numéro de paramètre. La fonction a le même nombre de paramètres spécifiés dans l’expression.

  2. Correspondance exacte sur le type. Chaque type d’argument de la fonction correspond exactement au type de paramètre, ou est le littéral Null.

  3. Correspondance sur le sous-type. Chaque type d’argument de la fonction correspond exactement ou est un sous-type du type de paramètre, ou l’argument est le littéral Null. Si plusieurs fonctions diffèrent uniquement dans le nombre de conversions de sous-types requises, la fonction avec le moins de conversions de sous-types est la fonction résolue.

  4. Correspondance sur le sous-type ou la promotion de type. Chaque type d’argument de la fonction correspond exactement, est un sous-type de, ou peut être promu au type de paramètre, ou l’argument est le littéral Null. Là encore, si plusieurs fonctions diffèrent uniquement dans le nombre de conversions et de promotions de sous-types, la fonction avec le moins de conversions de sous-types et de promotions est la fonction résolue.

Si aucun de ces critères n’entraîne la sélection d’une fonction unique, l’expression d’appel de fonction est ambiguë.

Même si une fonction unique peut être extraite à l’aide de ces règles, les arguments peuvent toujours ne pas correspondre aux paramètres. Une erreur est générée dans ce cas.

Pour les fonctions définies par l’utilisateur, la définition d’une fonction de requête inline est prioritaire même lorsqu’une fonction définie par un modèle existe avec une signature qui correspond mieux à la fonction définie par l’utilisateur.

Voir aussi