PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 27/11/2008 15:08:13

elekis
Membre

[libpq] ERREUR: longueur invalide dans la valeur externe ½ numeric

bonjour,

voila, je comprend pas trop, j'ai l'erreur suivante sur cette petite portion de code


 char *paramValues[5];
    int   LengthValues[5];
    int   FormatValues[5];
    
     ...

     realvalue[0] = 2.2;
     paramValues[0] = (char*)&realvalue[0];
     LengthValues[0] = sizeof(realvalue[0]);
     printf("%f  %d\n",realvalue[0],LengthValues[0]);
     FormatValues[0] = 1;

     res = PQexecPrepared(conn,
                          "",
                          1,
                          paramValues,
                          LengthValues,
                          FormatValues,
                          1);

     testres(res);

j'ai l'erreur suivante, et je ne sais pourquoi :
longueur invalide dans la valeur externe ½ numeric


si je comprend bien il rale sur le fait que la longeur est mauvaise mais bon , c'est la longueur d'un double

je sais pas si cela a avoir mais voici comment la table est creer
CREATE TABLE tab_3 (col_1 numeric(53,2), col_2 BIGINT, col_3 TEXT)

si qqn a une idée.??

merci

a++

Hors ligne

#2 27/11/2008 15:22:21

gleu
Administrateur

Re : [libpq] ERREUR: longueur invalide dans la valeur externe ½ numeric

Un "double" n'a pas forcément un format 51.2. Je suppose que ParamValues[0] est la valeur de col_1. Que donne un printf de cette valeur ? Et quelle est la requête associée au PQexecPrepared ?


Guillaume.

Hors ligne

#3 27/11/2008 15:29:45

elekis
Membre

Re : [libpq] ERREUR: longueur invalide dans la valeur externe ½ numeric

salut et merci

la requete est ceci

res =  PQprepare  (conn,
                       "",
                       "INSERT INTO tab_3 VALUES ($1, 2, 'kk')",
                       1,       /* one param */
                       NULL);

et le printf donne ceci

2.200000  8

les données sont declaré comme ceci
double  realvalue[5];


merci

a++

Dernière modification par elekis (27/11/2008 15:35:44)

Hors ligne

#4 27/11/2008 15:40:56

gleu
Administrateur

Re : [libpq] ERREUR: longueur invalide dans la valeur externe ½ numeric

Deux autres questions :
  * quelle version de PostgreSQL ?
  * quelle valeur pour LengthValues[0] ?


Guillaume.

Hors ligne

#5 27/11/2008 15:47:02

elekis
Membre

Re : [libpq] ERREUR: longueur invalide dans la valeur externe ½ numeric

c'est la version 8.3 de postgres
et lenthtvalues[0] = 8   c'est le second chiffre imprimé par
printf("%f  %d\n",realvalue[0],LengthValues[0]);
et donc 2.200000  8


merci

a+++

Dernière modification par elekis (27/11/2008 15:48:53)

Hors ligne

#6 27/11/2008 16:27:30

elekis
Membre

Re : [libpq] ERREUR: longueur invalide dans la valeur externe ½ numeric

salut,

je met ici le code complet de l'exemple

http://pastebin.com/m401795f7

merci

a++

Hors ligne

#7 28/11/2008 09:20:35

elekis
Membre

Re : [libpq] ERREUR: longueur invalide dans la valeur externe ½ numeric

chtit up :-(

Hors ligne

#8 28/11/2008 11:57:04

elekis
Membre

Re : [libpq] ERREUR: longueur invalide dans la valeur externe ½ numeric

bon alors, j'avance


http://pastebin.com/m1860cc27

la ou je comprend pas, c'est que si je met
intValues[0] =5;
      dans la db, j'ai   83886080
et si je met
intValues[0] =83886080;

dans la db, j'ai 5.

ha vi et 83886080 en hexa , cela donne 5000000

KEZAKO???? comprend plus trop :-(

merci

a++

Dernière modification par elekis (28/11/2008 12:11:17)

Hors ligne

Pied de page des forums