Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/04/2005, 22h44   #1
Invité de passage
 
Inscription : février 2005
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 6
Points : 1
Points : 1
Par défaut petit souci avec des variables avec des fonctions psql

bonjour ,
J'ai un probleme assez génant avec l'affectation de mes variables ( déclarées en entier ) , j'explique :

Si j'affecte un entier supérieur 30 à une variable , il me sera alors impossible de l'afficher ou de l'insérer dans une base de données
.Si celle-ci est inférieure à 30 alors il n'y a pas de problemes .

par contre si je decide d'insérer 100000 dans une base de données ( sans passer par une variable ) je n'ai pas de soucis.

c'est comme si mes variable ne pouvaient pas stoquées d'entier supérieur à30 ! elles retournent null si c'est le cas.

j'ai deja essayé de les déclarer en bigint et autre , et je n'ai aucune contraintes qui interdisent aux variables d'etre > 30 !

Moi perso je comprends vraiment pas !! Si quelqu'un a déja eu ce sale tour !! ce serait sympa de m'informer mercii beacoup
dust62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2005, 08h48   #2
Membre émérite
 
Avatar de hpalpha
 
Inscription : mars 2002
Messages : 770
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 770
Points : 833
Points : 833
bonjour,
ta procedure ressemble a quoi ?
hpalpha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2005, 12h41   #3
Invité de passage
 
Inscription : février 2005
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 6
Points : 1
Points : 1
voici la procedure, il s'agit en fait d' un trigger :
La fonction n'est pas terminée mais je voulais testé les valeurs calculées dans les variables en les affichant et pour des valeurs quie dépassent 30, la fonction affiche " <NULL> ".

create or replace function modif_classement() returns trigger as '
declare
essais int ;
transf int ;
drops int ;
pen int ;
bonus int ;
total_points int;

begin
bonus:=0 ;

essais := (select SUM(nb_essais)) from marque where id_equipe=new.id_equipe + new.nb_essais ;
transf := (select SUM(nb_transf)) from marque where id_equipe=new.id_equipe + new.nb_transf ;
drops := (select SUM(nb_drops)) from marque where id_equipe=new.id_equipe + new.nb_drops ;
pen := (select SUM(nb_pen)) from marque where id_equipe=new.id_equipe + new.nb_pen ;

if(essais - new.nb_essais > 3 ) then
bonus := bonus +1 ;
end if ;

total_points := essais + transf + drops + pen ;

raise notice '' essais : % transf : % drops : % pen : % total : % bonus : % nouv_essai : %'', essais, transf, drops , pen ,total_points,bonus, new.nb_essais ;


return null ;
return new ;
end ; '
language'plpgsql' ;


create trigger trig_classement
before insert or update
on marque
for each row
execute procedure modif_classement() ;
dust62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2005, 13h23   #4
Membre émérite
 
Avatar de hpalpha
 
Inscription : mars 2002
Messages : 770
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 770
Points : 833
Points : 833
Et si tu essayais :


Code :
1
2
3
4
5
6
.......
 
SELECT INTO essais SUM(nb_essais) FROM marque WHERE id_equipe=new.id_equipe + new.nb_essais ;
SELECT INTO transf SUM(nb_transf) FROM marque WHERE id_equipe=new.id_equipe + new.nb_transf ;
 
......
hpalpha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2005, 13h45   #5
Invité de passage
 
Inscription : février 2005
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 6
Points : 1
Points : 1
Merci pour tes réponses , c'est vraiment sympa.

Mais le probleme n'était pas la, j'ai juste affecté "new.nb_essais" a la variable essais a une autre ligne et maintenant ca marche.
Je comprends pas trop pourquoi mais bon tant que ca marche .
encore merci pour ton aide
dust62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h46.


 
 
 
 
Partenaires

Hébergement Web