Maison >base de données >tutoriel mysql >Pourquoi mon appel de fonction SQL échoue-t-il avec l'erreur « la fonction n'existe pas » ?
Considérez le message d'erreur suivant :
ERROR: function fnupdatesalegtab09(integer, integer, integer, integer, integer, unknown, unknown, integer, unknown, integer, unknown, integer, integer, integer, numeric, integer, integer, unknown, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, integer, unknown, integer, boolean, unknown, unknown, unknown, unknown, boolean, unknown, unknown, integer, unknown, integer, integer, integer, integer, integer) does not exist LINE 1: select FnUpdateSalegtab09 (4, 1, 0, 12, 1, '9','2014-07-15',... ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts.
Dans ce scénario, une tentative a été conçu pour appeler une fonction nommée FnUpdateSalegtab09 avec des paramètres spécifiques. Cependant, l'erreur indique que la fonction n'existe pas. De plus, l'erreur suggère qu'aucune fonction ne correspond au nom et aux types d'arguments spécifiés.
L'erreur est probablement due à un problème de diffusion. Dans l'appel de fonction, des littéraux numériques sont utilisés pour les paramètres définis comme smallint dans la définition de la fonction. Les littéraux numériques sont initialement présumés être de type entier si leur valeur correspond à un type entier. Puisqu'aucune conversion de type explicite n'est fournie, cela peut entraîner une inadéquation entre les types d'arguments attendus et réels.
Pour résoudre ce problème, ajoutez des conversions de type explicites aux littéraux numériques dans l'appel de fonction pour correspondre au type de données smallint attendu. Alternativement, vous pouvez utiliser des littéraux entre guillemets (non typés) dans l'appel de fonction.
Appel incorrect :
SELECT * FROM f_typetest(1);
Correct Appels :
SELECT * FROM f_typetest('1'); SELECT * FROM f_typetest(smallint '1'); SELECT * FROM f_typetest(1::int2); SELECT * FROM f_typetest('1'::int2);
En effectuant ces ajustements, l'appel de fonction devrait maintenant être reconnu et exécuté sans l'erreur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!