Vous n'êtes pas identifié(e).
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
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
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
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
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
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
merci arthurr pour ton aide appréciée
Hors ligne
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
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