Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 29/04/2014 06:26:05
- tatou
- Membre
fonction
Bonjour PLPGSQL pro
j'aimerais faire une fonction qui me divise un entier par 1000 ci-dessous le code :
CREATE FUNCTION unite_s ( x integer)
returns numeric(6,3)
AS
$corps$
Begin
return ( x /1000) ;
end;
$corps$
LANGUAGE PLPGSQL
mais lors de l'exécution une erreur s'affiche:
ERREUR: champ numérique en dehors des limites
DETAIL: Un champ de précision 6 et d'échelle 3 doit être arrondi à une valeur
absolue inférieure à 10^3.
j'ai essayé avec : select 465551/1000 ::numeric(7,3);
il me renvoie : 465.5510000000000000 et moi je veux que 465.551 sitou comment faire plz
merci pour ton aide appréciée
Hors ligne
#2 29/04/2014 08:37:54
- Geo-x
- Membre
Re : fonction
Bonjour tatou.
Essayez plutôt : select (465551/1000) ::numeric(7,3);
Sinon c'est 1000 que vous mettez en numeric(7,3).
Geo-x
Hors ligne
#3 29/04/2014 12:06:57
- tatou
- Membre
Re : fonction
merci pour ta réponse Geo-x,
je l'ai essayé :
select (465551/1000) ::numeric(7,3);
465.000 et non pas 465.551
Hors ligne
#4 29/04/2014 13:47:22
- arthurr
- Membre
Re : fonction
test# select (465551::decimal/1000)::decimal(7,3);
numeric
---------
465.551
(1 row)
Dernière modification par arthurr (29/04/2014 13:48:05)
Hors ligne
#5 29/04/2014 14:24:51
- tatou
- Membre
Re : fonction
merciii arthurr pour ta réponse alors ça veut qu'on doit définit le nombre 465551 comme étant décimal ?
et comme conséquence le code de ma fonction doit etre comme ça ?
CREATE FUNCTION unite_s ( xdecimal ) // au lieu de x integer on déclare x decimal
returns decimal (7,3)
AS
$corps$
Begin
return ( x /1000) ;
end;
$corps$
LANGUAGE PLPGSQL
Hors ligne
#6 30/04/2014 10:40:19
- arthurr
- Membre
Re : fonction
Celle là fonctionne bien :
test=# CREATE OR REPLACE FUNCTION unite_s (x decimal ) returns decimal AS $corps$
Begin
return ( x /1000)::decimal(7,3) ;
end;
$corps$
LANGUAGE PLPGSQL;
CREATE FUNCTION
test=# select * from unite_s(465551);
unite_s
---------
465.551
(1 row)
Hors ligne
#7 30/04/2014 11:38:31
- tatou
- Membre
Re : fonction
merci arthurr pour ton aide appréciée
Hors ligne
#8 16/08/2014 13:50:52
- Harry
- Membre
Re : fonction
Je m'explique, à la base, j'ai un fichier .csv dans lequel j'ai une colonne de temps (du timestamp) toutes les 5, 6 ou 30min sur une année et une colonne de pluie (en mm). La fonction devrait permettre de calculer un intervalle de temps 24H et de sommer les quantités de pluies correspondantes à cet intervalle.
Hors ligne
#9 03/09/2014 09:06:19
- Geo-x
- Membre
Re : fonction
Bonjour Harry.
Il me semble que ce sujet a déjà été traité : http://forums.postgresql.fr/viewtopic.php?id=3044
Geo-x
Hors ligne