Maison >base de données >tutoriel mysql >Pourquoi mon appel de fonction SQL échoue-t-il avec « la fonction… n'existe pas » et comment puis-je y remédier ?

Pourquoi mon appel de fonction SQL échoue-t-il avec « la fonction… n'existe pas » et comment puis-je y remédier ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-27 13:03:16758parcourir

Why Does My SQL Function Call Fail with

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

Dans le code fourni, une tentative est effectuée pour appeler la fonction FnUpdateSalegtab09. Cependant, une erreur est rencontrée, indiquant que la fonction n'existe pas ou que ses types d'arguments ne correspondent pas à ceux attendus.

Le message d'erreur suggère que le nom de la fonction ou les types d'arguments peuvent être incorrects. Examinons les causes possibles.

Compatibilité des types d'arguments

La signature de fonction pour FnUpdateSalegtab09 spécifie que plusieurs de ses paramètres sont de type smallint. Cependant, dans l'appel de fonction, ces paramètres sont transmis sous forme de littéraux numériques, qui sont initialement présumés être de type entier.

Cette inadéquation entre les types attendus et réels des arguments peut entraîner l'erreur.

Solution

Pour résoudre ce problème, vous devez explicitement convertir les littéraux numériques en type correct, smallint, avant de les transmettre à la fonction. Vous pouvez y parvenir en ajoutant un opérateur de transtypage de type (::) à chaque littéral, comme indiqué ci-dessous :

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
);

En ajoutant les transtypages de type explicites, vous vous assurez que les types d'arguments correspondent aux attentes de la fonction. définition, et l'appel de fonction devrait maintenant s'exécuter sans l'erreur "la fonction ... n'existe pas".

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