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. :tagcode:
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 ;^ |