IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

petit souci avec des variables avec des fonctions psql


Sujet :

PostgreSQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 16
    Points : 16
    Points
    16
    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

  2. #2
    Membre émérite
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Points : 2 545
    Points
    2 545
    Par défaut
    bonjour,
    ta procedure ressemble a quoi ?
    Delphi 2009 - ZeosLib - DevExpress - TMS - PgDAC
    PostgreSQL 8.4 sous Debian
    Sites : http://postgresql.developpez.com http://dgriessinger.developpez.com

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    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() ;

  4. #4
    Membre émérite
    Avatar de hpalpha
    Inscrit en
    Mars 2002
    Messages
    769
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 769
    Points : 2 545
    Points
    2 545
    Par défaut
    Et si tu essayais :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ;
     
    ......
    Delphi 2009 - ZeosLib - DevExpress - TMS - PgDAC
    PostgreSQL 8.4 sous Debian
    Sites : http://postgresql.developpez.com http://dgriessinger.developpez.com

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 16
    Points : 16
    Points
    16
    Par défaut
    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

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/05/2014, 14h16
  2. Réponses: 3
    Dernier message: 02/08/2012, 18h10
  3. Réponses: 4
    Dernier message: 01/10/2009, 17h56
  4. Réponses: 1
    Dernier message: 15/05/2006, 18h05
  5. Problème avec des listes et des variables
    Par Knuckles dans le forum Général Python
    Réponses: 3
    Dernier message: 09/05/2006, 18h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo