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

SQL Firebird Discussion :

procedures stockees et insertion


Sujet :

SQL Firebird

  1. #1
    Membre confirmé Avatar de rlgrand
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 431
    Points : 523
    Points
    523
    Par défaut procedures stockees et insertion
    Bonjour,
    je travaille sur la gestion d'une bdd de gestion de partie de tarot.
    La dernière procedure qui met à jour les résultats ne marche pas, elle n'insère qu'un seul enregistrement.
    J'ai tourné le pb dans tous les sens et je ne voie pas où est l'erreur.
    Si quelqu'un peut m'aider.
    Voici le code que j'ai trouvé
    /* procédure stockée qui remplit la table résultat avec les scores des joueurs */
    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 TERM ^;
    CREATE PROCEDURE PS_MAJ_RESULTAT(NUMERO_PARTIE INTEGER,NUMERO_DONNE INTEGER )
    RETURNS
    AS
    DECLARE VARIABLE NUM_LICENCE CHAR(10);
    DECLARE VARIABLE POINT_DONNE DECIMAL(2,1);
    DECLARE VARIABLE POINT_POIGNEE DECIMAL(2,1);
    DECLARE VARIABLE POINT_PETIT DECIMAL(2,1);
    DECLARE VARIABLE POINT DECIMAL(2,1);
    BEGIN
    FOR SELECT POINT_DONNE,NUMERO_LICENCE
        FROM PS_POINT_DONNE(:NUMERO_PARTIE,:NUMERO_DONNE )
        INTO :POINT_DONNE,:NUM_LICENCE
        DO
        BEGIN
         SELECT POINT_PETIT
         FROM PS_POINT_PETIT(:NUMERO_PARTIE,:NUMERO_DONNE)
         WHERE NUMERO_LICENCE=:NUM_LICENCE
         INTO :POINT_PETIT;
         SELECT POINT_POIGNEE
         FROM PS_POINT_POIGNEE(:NUMERO_PARTIE,:NUMERO_DONNE)
         WHERE NUMERO_LICENCE=:NUM_LICENCE
         INTO :POINT_POIGNEE;
         POINT=POINT_DONNE+POINT_PETIT+POINT_POIGNEE;
         INSERT INTO RESULTAT VALUES (:POINT,:NUMERO_PARTIE,:NUMERO_DONNE,:NUM_LICENCE);
         SUSPEND;
        END
    END^
    SET TERM ;^
    Merci d'avance

    Edité par Barbibulle : Pensez à utiliser les balises Codes pour que votre message soit plus lisible.
    Avant de poster sur le forum , faites une recherche

  2. #2
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut Re: procedures stockees et insertion
    Cette procedure ne retourne pas de données donc :
    ne pas mettre RETURNS et ne pas utilise SUSPEND

    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
    SET TERM ^;
    CREATE PROCEDURE PS_MAJ_RESULTAT(NUMERO_PARTIE INTEGER,NUMERO_DONNE INTEGER )
    AS
    DECLARE VARIABLE NUM_LICENCE CHAR(10);
    DECLARE VARIABLE POINT_DONNE DECIMAL(2,1);
    DECLARE VARIABLE POINT_POIGNEE DECIMAL(2,1);
    DECLARE VARIABLE POINT_PETIT DECIMAL(2,1);
    DECLARE VARIABLE POINT DECIMAL(2,1);
    BEGIN
    FOR SELECT POINT_DONNE,NUMERO_LICENCE
        FROM PS_POINT_DONNE(:NUMERO_PARTIE,:NUMERO_DONNE )
        INTO :POINT_DONNE,:NUM_LICENCE
        DO
        BEGIN
         SELECT POINT_PETIT
         FROM PS_POINT_PETIT(:NUMERO_PARTIE,:NUMERO_DONNE)
         WHERE NUMERO_LICENCE=:NUM_LICENCE
         INTO :POINT_PETIT;
         SELECT POINT_POIGNEE
         FROM PS_POINT_POIGNEE(:NUMERO_PARTIE,:NUMERO_DONNE)
         WHERE NUMERO_LICENCE=:NUM_LICENCE
         INTO :POINT_POIGNEE;
         POINT=POINT_DONNE+POINT_PETIT+POINT_POIGNEE;
         INSERT INTO RESULTAT VALUES (:POINT,:NUMERO_PARTIE,:NUMERO_DONNE,:NUM_LICENCE);
        END
    END^
    SET TERM ;^

  3. #3
    Membre confirmé Avatar de rlgrand
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    431
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 431
    Points : 523
    Points
    523
    Par défaut Procédures stockées
    Bonjour,
    Merci pour le coup de pouce ( évident après coup ).
    Kenavo.
    Avant de poster sur le forum , faites une recherche

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

Discussions similaires

  1. [PROCEDURE STOCKEE]Utilisation incorrecte de INSERT
    Par BaronSamdi dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 11/03/2004, 16h26
  2. [debutant] Postgres et les procedures stockees
    Par bmayer dans le forum PostgreSQL
    Réponses: 11
    Dernier message: 09/01/2004, 10h18
  3. Réponses: 5
    Dernier message: 11/12/2003, 14h45
  4. procedure stockee et sql
    Par fred33 dans le forum SQL
    Réponses: 2
    Dernier message: 27/11/2003, 10h23
  5. [VB6] [ADO] Procedure stockée : spécifier les paramètres
    Par adepdoom dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/10/2002, 10h45

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