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

MS SQL Server Discussion :

- [procédure stockée] - Problème de Somme


Sujet :

MS SQL Server

  1. #1
    Membre averti
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Par défaut [résolu] - [procédure stockée] - Problème de Somme
    Je cherche à faire une somme avec une procédure stockée...
    cette somme je veux la stockée dans ma base de données afin de créer un graphique en Histogramme...

    Mon problème est que ma variable @Total est égale à zéro une fois la procédure éxécuté...
    Je comprend pas pkoi...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    SET @Total = 0
    SET @tempo = 0
     
    /*début curseur*/
    DECLARE Histogramme_Cursor CURSOR FOR
    SELECT NumNoteDeFrais FROM NoteDeFrais WHERE Periode LIKE @Date2
    OPEN Histogramme_Cursor
    FETCH Histogramme_Cursor INTO @NumNoteDeFrais
    WHILE @@FETCH_STATUS = 0
    BEGIN
    /*calcul du total*/
    SELECT tempo = Sum(MontantMission) FROM Mission WHERE NumNoteDeFrais = @NumNoteDeFrais
    SET @Total = @Total + @tempo
    SELECT tempo = Sum(MontantReception) FROM Reception WHERE NumNoteDeFrais = @NumNoteDeFrais
    SET @Total = @Total + @tempo
    SELECT tempo = Sum(MontantCarburant) FROM Carburant WHERE NumNoteDeFrais = @NumNoteDeFrais
    SET @Total = @Total + @tempo
    SELECT tempo = Sum(TotalTransport) FROM Transport WHERE NumNoteDeFrais = @NumNoteDeFrais
    SET @Total = @Total + @tempo
     
    FETCH Histogramme_Cursor INTO @NumNoteDeFrais
    END
    CLOSE Histogramme_Cursor
    DEALLOCATE Histogramme_Cursor
    /*fin curseur*/
     
     
    INSERT INTO Graph (DateHisto, TotalHisto) VALUES (@DateHisto, @Total)
    DELETE FROM Graph WHERE NumHisto = @Num

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 227
    Billets dans le blog
    25
    Par défaut
    Avant de répondre à ta question, pourquoi fais-tu un curseur plutôt que des jointures sur ta table NoteDeFrais ?
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  3. #3
    Membre averti
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Par défaut
    je suis pas habitué à travailler avec les jointures...

    c pour ça que g fait un curseur qui parcours tous les résultats de ma requête : SELECT NumNoteDeFrais FROM NoteDeFrais WHERE Periode LIKE @Date2


    as-tu une idée du pourquoi @Total=0
    alors que mes sommes ne sont pas nulles

  4. #4
    Membre averti
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Par défaut
    Autrement si ya moyen de réaliser cela avec une jointure, je veux bien kon m'explique...

    mé si qqun voit pourquoi @Total est égal à zéro à la fin de l'éxécution de la procédure stockée, je veut bien savoir car mis à part cela mon code me semble bon...

    merci d'avance...

  5. #5
    Membre averti
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Par défaut
    ya personne qui peut m'aider...snif...

  6. #6
    Membre averti
    Inscrit en
    Février 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 24
    Par défaut
    g trouvé...

    le problème venait que parfois dans les tables il n'y avait pas de données à sommer donc la somme de 'rien' me renvoyait NULL....
    une petite fonction isnull() et le tour est joué...

    enfin merci de votre aide quand même...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT @tempo = isnull(Sum(MontantMission), 0) FROM Mission WHERE NumNoteDeFrais = @NumNoteDeFrais
    SET @Total = @Total + @tempo
    SELECT @tempo = isnull(Sum(MontantReception), 0) FROM Reception WHERE NumNoteDeFrais = @NumNoteDeFrais
    SET @Total = @Total + @tempo
    SELECT @tempo = isnull(Sum(MontantCarburant), 0) FROM Carburant WHERE NumNoteDeFrais = @NumNoteDeFrais
    SET @Total = @Total + @tempo
    SELECT @tempo = isnull(Sum(TotalTransport), 0) FROM Transport WHERE NumNoteDeFrais = @NumNoteDeFrais
    SET @Total = @Total + @tempo

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Procédure stockée problème
    Par Kirua76 dans le forum Développement
    Réponses: 7
    Dernier message: 08/07/2011, 09h40
  2. Procédure stockée --> Problème de syntaxe
    Par skyline86 dans le forum Développement
    Réponses: 1
    Dernier message: 08/02/2010, 12h40
  3. Réponses: 10
    Dernier message: 25/05/2007, 15h21
  4. Réponses: 5
    Dernier message: 09/05/2005, 12h24
  5. Problème avec une procédure stockée
    Par in dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/05/2003, 15h33

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