Téléchargement
illégal
Posez votre question Signaler

Utilisation d'un curseur en PL/ SQL [Résolu]

safowan 144Messages postés 13 juillet 2007Date d'inscription 24 janvier 2011Dernière intervention - Dernière réponse le 31 janv. 2009 à 21:05
Bonjour,
Lors de la révision j'ai trouvé un petit exemple qui utilise le curseur, mais je crois que sa correction contient une erreur qui m'a mené à ne pas bien comprendre l'exemple. Alors peux je avoir de l'aide en me corrigeant l'erreur ou bien me faire comprendre la correction ? et merci d'avance.
La table est :
PRODUIT (Num_Produit, Num_Fournisseur #, Libelle_Produit, Qte_Stock, Stock_Limite)
La question s'etait :
Créer une fonction F_STOCK_LIMITE qui permet de retourner la quantité en stock limite d’un produit dont le numéro est passé en argument. On utilisera obligatoirement un curseur explicite pour extraire la quantité en stock limite du produit.
et la correction s'etait :
CREATE OR REPLACE FUNCTION F_STOCK_LIMITE (A_NUM_PRODUIT IN PRODUIT.NUM_PRODUIT%TYPE)
RETURN NUMBER IS
CURSOR C_STOCK_LIMITE IS
SELECT STOCK_LIMITE FROM PRODUIT
WHERE NUM_PRODUIT=A_NUM_PRODUIT;
BEGIN
FOR V_ STOCK_LIMITE IN C_STOCK_LIMITE
RETURN V_STOCK_LIMITE.STOCK_LIMITE;
END LOOP;
END F_STOCK_LIMITE;
Ce qui me gène, c'est la nouvelle variable "V_stock_limite" (je l'ai mis en gras) qui est utilisée dans le programmme et qui n'est pas déclarée au début. Qu'est ce qu'elle représente ?
Lire la suite 

Utilisation d'un curseur en PL/ SQL »

4 réponses
Réponse
+1
moins plus
Salut,
Je ne savais pas qu'on pouvait faire des boucles sur les curseurs comme ca...mais c'est super efficace!!!
En fait, la variable V_STOCK_LIMITE est le curseur courant de ta boucle.
Par exemple ton curseur va renvoyer 3 lignes, V_STOCK_LIMITE est le curseur courant de ta boucle (premiere entrée dans la boucle, il va contenir la premiere ligne ensuite deuxieme entrée dans la boucle, il va contenir la deuxieme ligne etc.....jusqu'a plus de ligne trouvée).
Tu pourrais faire la meme chose avec un FETCH, mais ca te fait des lignes de code en plus......
C'est une declaration implicite pour les boucles.
@+
safowan- 31 janv. 2009 à 20:33
Merci Chuka de me répondre :)
Alors à ce que j'ai bien compris, V_STOCK_LIMITE est le curseur courant et chaque fois lorsqu'on retourne V_STOCK_LIMITE.STOCK_LIMITE c'est à dire qu'on retourne la limite du produit de chaque ligne du curseur.
chuka- 31 janv. 2009 à 20:53
Salut,
Exactement!!! (en fait curseur courant je suis pas sur que ce soit une bonne denomination, comme je l'ai écrit avant, peut-etre curseur representant l'indice courant du curseur dans la boucle, ou "pointeur" de la ligne courante , serait plus approprié.... mais le principal c'est de comprendre la notion!! ;-))
merci à toi, car j'ai appris un truc plutot interessant pour les curseur ce soir!!!
@+
Ajouter un commentaire
Réponse
+1
moins plus
Tout est clair maintenant Chuka, je te remercie une autre fois :)
Ajouter un commentaire
Ce document intitulé « utilisation d'un curseur en PL/ SQL » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?