Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
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 23/04/2004, 00h41   #1
Membre éprouvé
 
Avatar de rlgrand
 
Enseignant
Inscription : avril 2004
Messages : 432
Détails du profil
Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : avril 2004
Messages : 432
Points : 466
Points : 466
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 :
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.
rlgrand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2004, 22h15   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
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 :
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 ;^
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2004, 14h49   #3
Membre éprouvé
 
Avatar de rlgrand
 
Enseignant
Inscription : avril 2004
Messages : 432
Détails du profil
Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : avril 2004
Messages : 432
Points : 466
Points : 466
Par défaut Procédures stockées

Bonjour,
Merci pour le coup de pouce ( évident après coup ).
Kenavo.
rlgrand est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h06.


 
 
 
 
Partenaires

Hébergement Web