IN A REFERENCE TO FUNCTION function-name BY SIGNATURE, A MATCHING FUNCTION COULD NOT BE FOUND
Explication
Dans une référence à la fonction function-name par signature, aucune fonction correspondante n’a pu être trouvée. Le problème peut provenir du type de données ou d’autres attributs d’un paramètre. Pour certains types de données, il existe des attributs en plus du type de données :
- Longueur, précision ou échelle
Bien qu’il ne soit pas nécessaire de spécifier un attribut de longueur, de précision ou d’échelle pour un type de données, s’il en est un, il doit y avoir une correspondance exacte sur la spécification correspondante du paramètre pour la fonction existante telle que définie dans SYSPARMS.
Un type de FLOAT(n) n’a pas besoin de correspondre à la valeur définie pour n puisque 1<=n<=21 signifie REAL et 22<=n<=53 signifie DOUBLE. La correspondance se produit selon que le type est REAL ou DOUBLE.
Cependant, une correspondance sur le type de données est suffisante.
Pour l’indiquer, un ensemble vide de parenthèses doit être spécifié pour les types de données qui permettent une spécification de longueur, de précision ou d’échelle. Par exemple, en supposant qu’il existe une fonction pour laquelle un paramètre a été défini comme CHAR(12) dans l’instruction CREATE FUNCTION, une référence à cette fonction par une signature pourrait spécifier ce paramètre comme CHAR(12) ou CHAR(). La syntaxe CHAR() fournit un moyen de dire “ne vous souciez pas des attributs de longueur, de précision et d’échelle pour trouver une fonction correspondante”.
FLOAT() ne peut pas être utilisé car la valeur du paramètre indique différents types de données (REAL ou DOUBLE).
Si, toutefois, aucune longueur, précision, échelle ou parenthèse vide n’a été spécifié, les règles par défaut normales s’appliquent. Par exemple, une spécification de CHAR se traduirait par CHAR(1) comme dans l’instruction CREATE TABLE. De plus, cette spécification implicite de longueur, de précision ou d’échelle doit correspondre exactement à la spécification correspondante du paramètre pour la fonction existante telle que définie dans SYSPARMS.
- Sous-type ou schéma de codage
Vous n’avez pas besoin de spécifier le sous-type ou le schéma de codage (clause CCSID) pour identifier une fonction existante dans la base de données. Cependant, si un sous-type ou un schéma de codage est spécifié, il doit y avoir une correspondance exacte sur la spécification correspondante du paramètre pour la fonction existante telle que définie dans SYSPARMS.
Noms de fonction non qualifiés :
- Pour les instructions ALTER FUNCTION, DROP FUNCTION, COMMENT ON FUNCTION, GRANT et REVOKE pour EXECUTE sur les fonctions, un nom de fonction non qualifié est implicitement qualifié avec le schéma par défaut, et c’est le schéma où la fonction avec le problème peut être trouvée.
- Dans la clause SOURCE d’une instruction CREATE FUNCTION, la qualification provient du chemin SQL. Dans ce cas, Db2 n’a pas pu résoudre l’appel d’une fonction à l’aide des schémas du chemin SQL de l’utilisateur. Pour plus de détails, voir CREATE FUNCTION (source).
Action du système
L’instruction ne peut pas être traitée.
Réponse du programmeur
Les réponses possibles incluent :
- Modification du chemin SQL pour inclure le schéma correct.
- Modification des attributs des paramètres.
- Utiliser un nom SPÉCIFIQUE pour faire référence à la fonction au lieu d’une signature.
SQLSTATE
42883