Lists: | pgsql-fr-generale |
---|
From: | philippe dhondt <philippe(dot)dhondt(at)tele2(dot)be> |
---|---|
To: | postgresql <pgsql-fr-generale(at)postgresql(dot)org> |
Subject: | Problème de typage . |
Date: | 2008-09-22 08:45:26 |
Message-ID: | 1222073126.8124.0.camel@ibm1 |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-fr-generale |
Bonjour à toutes et tous,
petit problème de typage :
soit une table contenant les champs :
A integer
B integer
C numeric(4,2)
Les champs A & B sont regulierement updatés et le champ C doit contenir
le résultat d'une fonction lancée via un trigger update.
Cette fonction contient les variables :
vA integer
vB integer
vC numeric(4,2)
Le calcul, très simple, consiste en :
vC := (( vA / vB ) ) * 100;
On enregistre ensuite le resultat :
NEW.C := vC;
Et le resultat est toujours 0, sauf lorsque ce resultat est un nombre
entier.
Comment faire pour recueillir ce resultat sous la forme d'un
numeric(4,2) ?
C'est sans doute trèc con, mais j'ai cherché dans le manuel ce week-end
et n'ai rien trouvé.
Une piste?
Merci d'avance.
From: | Jean-Samuel Reynaud <reynaud(at)elma(dot)fr> |
---|---|
To: | philippe dhondt <philippe(dot)dhondt(at)tele2(dot)be> |
Cc: | postgresql <pgsql-fr-generale(at)postgresql(dot)org> |
Subject: | Re: Problème de typage . |
Date: | 2008-09-22 10:01:13 |
Message-ID: | 20080922120113.17da7399@reynaud-dell |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-fr-generale |
Bonjour,
Tente plutôt:
vC := (vA * 100 )/ vB::numeric(4,2)
Mais bon ton numeric 4,2 est à mon avis un peu juste dans bien des
cas... Tu auras alors une erreur type:
ERROR: numeric field overflow
Le Mon, 22 Sep 2008 10:45:26 +0200,
philippe dhondt <philippe(dot)dhondt(at)tele2(dot)be> a écrit :
> Bonjour à toutes et tous,
>
> petit problème de typage :
>
> soit une table contenant les champs :
> A integer
> B integer
> C numeric(4,2)
>
> Les champs A & B sont regulierement updatés et le champ C doit
> contenir le résultat d'une fonction lancée via un trigger update.
>
> Cette fonction contient les variables :
> vA integer
> vB integer
> vC numeric(4,2)
>
> Le calcul, très simple, consiste en :
> vC := (( vA / vB ) ) * 100;
>
> On enregistre ensuite le resultat :
> NEW.C := vC;
>
> Et le resultat est toujours 0, sauf lorsque ce resultat est un nombre
> entier.
>
> Comment faire pour recueillir ce resultat sous la forme d'un
> numeric(4,2) ?
>
> C'est sans doute trèc con, mais j'ai cherché dans le manuel ce
> week-end et n'ai rien trouvé.
>
> Une piste?
>
> Merci d'avance.
>
>
>
>
>
>
>
>
From: | "Ludovic Levesque" <luddic(at)gmail(dot)com> |
---|---|
To: | "philippe dhondt" <philippe(dot)dhondt(at)tele2(dot)be> |
Cc: | postgresql <pgsql-fr-generale(at)postgresql(dot)org> |
Subject: | Re: Problème de typage . |
Date: | 2008-09-22 10:03:40 |
Message-ID: | 162718d40809220303v3731c102me72d2c906c7f8023@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-fr-generale |
Bonjour:
voila qui devrait vous aider:
# SELECT 5 / 7, 5 / 7::float;
?column? | ?column?
----------+-------------------
0 | 0.714285714285714
(1 row)
Ludo
2008/9/22 philippe dhondt <philippe(dot)dhondt(at)tele2(dot)be>:
> Bonjour à toutes et tous,
>
> petit problème de typage :
>
> soit une table contenant les champs :
> A integer
> B integer
> C numeric(4,2)
>
> Les champs A & B sont regulierement updatés et le champ C doit contenir
> le résultat d'une fonction lancée via un trigger update.
>
> Cette fonction contient les variables :
> vA integer
> vB integer
> vC numeric(4,2)
>
> Le calcul, très simple, consiste en :
> vC := (( vA / vB ) ) * 100;
>
> On enregistre ensuite le resultat :
> NEW.C := vC;
>
> Et le resultat est toujours 0, sauf lorsque ce resultat est un nombre
> entier.
>
> Comment faire pour recueillir ce resultat sous la forme d'un
> numeric(4,2) ?
>
> C'est sans doute trèc con, mais j'ai cherché dans le manuel ce week-end
> et n'ai rien trouvé.
>
> Une piste?
>
> Merci d'avance.
>
>
>
>
>
>
>
>
> --
> Sent via pgsql-fr-generale mailing list (pgsql-fr-generale(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-fr-generale
>
From: | philippe dhondt <philippe(dot)dhondt(at)tele2(dot)be> |
---|---|
To: | Jean-Samuel Reynaud <reynaud(at)elma(dot)fr> |
Cc: | postgresql <pgsql-fr-generale(at)postgresql(dot)org> |
Subject: | Re: Problème de typage . |
Date: | 2008-09-22 13:14:53 |
Message-ID: | 1222089293.10851.0.camel@ibm1 |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-fr-generale |
Bonjour,
et merci, c'est exactement ce que je cherchais
@+
Le lundi 22 septembre 2008 à 12:01 +0200, Jean-Samuel Reynaud a écrit :
> Bonjour,
>
> Tente plutôt:
> vC := (vA * 100 )/ vB::numeric(4,2)
> Mais bon ton numeric 4,2 est à mon avis un peu juste dans bien des
> cas... Tu auras alors une erreur type:
> ERROR: numeric field overflow
>
>
>
> Le Mon, 22 Sep 2008 10:45:26 +0200,
> philippe dhondt <philippe(dot)dhondt(at)tele2(dot)be> a écrit :
>
> > Bonjour à toutes et tous,
> >
> > petit problème de typage :
> >
> > soit une table contenant les champs :
> > A integer
> > B integer
> > C numeric(4,2)
> >
> > Les champs A & B sont regulierement updatés et le champ C doit
> > contenir le résultat d'une fonction lancée via un trigger update.
> >
> > Cette fonction contient les variables :
> > vA integer
> > vB integer
> > vC numeric(4,2)
> >
> > Le calcul, très simple, consiste en :
> > vC := (( vA / vB ) ) * 100;
> >
> > On enregistre ensuite le resultat :
> > NEW.C := vC;
> >
> > Et le resultat est toujours 0, sauf lorsque ce resultat est un nombre
> > entier.
> >
> > Comment faire pour recueillir ce resultat sous la forme d'un
> > numeric(4,2) ?
> >
> > C'est sans doute trèc con, mais j'ai cherché dans le manuel ce
> > week-end et n'ai rien trouvé.
> >
> > Une piste?
> >
> > Merci d'avance.
> >
> >
> >
> >
> >
> >
> >
> >