Maison >base de données >tutoriel mysql >Pourquoi est-ce que j'obtiens l'erreur « ERREUR : la fonction... n'existe pas » et comment puis-je corriger l'incompatibilité de type dans mon appel de fonction ?

Pourquoi est-ce que j'obtiens l'erreur « ERREUR : la fonction... n'existe pas » et comment puis-je corriger l'incompatibilité de type dans mon appel de fonction ?

DDD
DDDoriginal
2025-01-05 14:25:40563parcourir

Why am I getting the

Comprendre l'erreur : "ERREUR : la fonction... n'existe pas et CONSEIL : aucune fonction ne correspond au nom donné et aux types d'arguments"

Lorsque vous tentez d'exécuter une fonction, il est crucial de vous assurer que le nom de la fonction et les types d'arguments spécifiés correspondent à la définition réelle de la fonction. S'il y a une incompatibilité, vous rencontrerez probablement l'erreur « ERREUR : la fonction… n'existe pas et CONSEIL : aucune fonction ne correspond au nom donné et aux types d'arguments. »

Solution : examen des types d'arguments.

Dans ce scénario spécifique, l'erreur est liée à une incompatibilité de type pour les paramètres "smallint" dans la définition de votre fonction. Cependant, dans l'appel de fonction, vous utilisez des littéraux numériques présumés être de type « entier ».

Comprendre les littéraux numériques

Une chaîne littérale (comme '123') n'est initialement pas typé et le reste jusqu'à ce que sa valeur soit attribuée ou explicitement convertie. Cependant, les littéraux numériques (comme 123) sont immédiatement saisis comme « entier » s'ils rentrent dans la plage autorisée, et comme « bigint » ou « numérique » s'ils dépassent cette plage.

Résoudre l'incompatibilité

Pour résoudre le problème, vous disposez de deux options :

  • Ajouter des conversions explicites : Ajouter des conversions explicites pour les paramètres "smallint" dans l'appel de fonction :

    SELECT FnUpdateSalegtab09 (4, 1, 0, 12, 1, '9'::varchar,'2014-07-15'::timestamp, 4048, '9'::varchar, 4048, 'MYCUSTOMER'::varchar, 12::money, 0, 0::money, 0.32, 185, 0, '2014-07-15 11:24:12 AM'::timestamp, 0, 0::money, 0, 0::money, 0::money, 0, 0::money, 0, 0::money, 0, 0::money, ''::varchar, 0::money, False, ''::varchar, '2014-07-15'::timestamp, ''::varchar, ''::varchar, False, ''::varchar, ''::varchar, 1, ''::varchar, 1,0,1,0,42)
  • Passer les littéraux non typés : Passer les littéraux cités (non typés) pour le Paramètres "smallint":

    SELECT FnUpdateSalegtab09 (4, 1, 0, 12, 1, '9'::varchar,'2014-07-15'::timestamp, 4048, '9'::varchar, 4048, 'MYCUSTOMER'::varchar, 12::money, 0, 0::money, 0.32, 185, 0, '2014-07-15 11:24:12 AM'::timestamp, 0, 0::money, 0, 0::money, 0::money, 0, 0::money, 0, 0::money, 0, 0::money, ''::varchar, 0::money, False, ''::varchar, '2014-07-15'::timestamp, ''::varchar, ''::varchar, False, ''::varchar, ''::varchar, 1, ''::varchar, 1, '0', '1', '0', 42)

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn