ERREUR : incompatibilité d'invocation de fonction et conversion de type d'argument
Dans votre code, vous rencontrez l'erreur : "ERREUR : la fonction... fait n'existe pas et CONSEIL : Aucune fonction ne correspond au nom et aux types d'argument donnés." Cette erreur résulte d'une inadéquation entre la définition de la fonction et les arguments passés lors de l'appel.
Plus précisément, votre fonction, FnUpdateSalegtab09, a plusieurs paramètres déclarés comme type de données « smallint ». Cependant, lorsque vous appelez la fonction, vous transmettez des littéraux numériques (par exemple, « 12 ») comme arguments pour ces paramètres.
Problème de conversion de type
PostgreSQL suppose que les littéraux numériques sans points décimaux ni exposants comme type « entier » par défaut. Cependant, les paramètres de votre fonction sont définis comme « smallint », qui est une plage de -32 768 à 32 767. La transmission d'une valeur entière sans transtypage explicite au-delà de cette plage peut entraîner une troncature des données ou des erreurs.
Solution
Pour résoudre ce problème, vous disposez de deux options :
1. Conversion de type explicite dans l'invocation de fonction :
Vous pouvez explicitement convertir les littéraux numériques en « smallint » dans l'invocation de fonction en utilisant la syntaxe « :: smallint ». Par exemple :
select FnUpdateSalegtab09 (4, 1, 0, 12, 1::smallint, '9'::varchar,....
2. Passer des littéraux non typés :
Vous pouvez également utiliser des littéraux de chaîne non typés dans l'appel de fonction. PostgreSQL déduira alors le type de données correct en fonction des paramètres de la fonction. Pour ce faire, placez le littéral numérique entre guillemets simples :
select FnUpdateSalegtab09 (4, 1, 0, 12, '1':: smallint,....
Exemple
Considérez l'invocation de fonction corrigée suivante :
select FnUpdateSalegtab09 (4, 1, 0, 12::smallint, 1, '9'::varchar,....
Cet appel convertit explicitement le littéral entier « 12 » en « smallint », garantissant que les paramètres de la fonction correspondent à ceux attendus. types de données.
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!