2010-08-18 6 views
0

Je suis très nouveau pour les procédures stockées. J'essaye de faire une procédure stockée qui effectuerait une mise à jour en acceptant 2 paramètres d'entrée et retournerais le nombre d'enregistrements mis à jour (dans mon cas toujours 1).Procédure stockée renvoyer le nombre d'enregistrements mis à jour?

J'ai réussi jusqu'ici mais je ne comprends pas comment retourner la variable après avoir ouvert le curseur. Le curseur est-il nécessaire dans mon cas? Veuillez me corriger si mon approche est incorrecte.

CREATE PROCEDURE PAKRETST.FTUMODINST (IN GENFORTREATYSRNO INTEGER,IN GENFTMDPDUENO INTEGER, OUT NUMREC SMALLINT) 
RESULT SETS 0 MODIFIES SQL DATA LANGUAGE SQL 
P1:BEGIN 
    DELCARE strCmd VARCHAR(500); 
    DECLARE x CURSOR WITH RETURN TO CALLER FOR SL; 
    SET strCmd='UPDATE PAKRETST.UWFTMDPDUEDATES a where a.GENFORTREATYSRNO='||GENFORTREATYSRNO||'AND a.GENFTMDPDUENO='||GENFTMDPDUENO; 
    PREPARE SL FROM strCmd; 
    SET NUMREC= -- Stuck here -- 
    RETURN; 
    END 
    ; 

Répondre

3

Vous n'avez pas besoin de curseur. Utilisez simplement GET DIAGNOSTICS NUMREC = ROW_COUNT sur la ligne sur laquelle vous êtes bloqué.

Plus d'infos here.

+0

Merci pour la réponse, c'était très utile. Savez-vous comment retourner le paramètre out à la fin de la procédure? Une validation est également nécessaire après la mise à jour? –

+0

Après le retour de la procédure, la valeur du paramètre OUT sera disponible dans la variable que vous avez fournie pour ce paramètre lorsque vous avez appelé la procédure. Vous COMMITEz après une MISE À JOUR qui se produit dans une transaction. Sinon, COMMIT n'est pas nécessaire. –

+0

Merci Jeff votre réponse a été si utile =) –

Questions connexes