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
Libérer: 2024-12-27 13:03:16
original
753 Les gens l'ont consulté

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
);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal