
Libère les ressources associées au curseur.
CLOSE nom_du_curseur;
118
Modification et suppression de données
Pour pouvoir supprimer la ligne de la table correspondant à la ligne courante du curseur (ou y
modifier des données), il faut impérativement avoir déclaré le curseur avec l'option " FOR
UPDATE OF col1, col2,...". Dans l'instruction SQL de modification ou de suppression, il faut
utiliser le mot clé CURRENT OF nom_curseur, dans la clause WHERE.
IF adresse IS NULL THEN
UPDATE client SET adresse='??????'
WHERE CURRENT OF nom_curseur;
END IF;
ATTRIBUT DES CURSEURS
Pour les curseurs : Explicites :
%NOTFOUND : Booléen. Vrai quand la commande FETCH échoue.
%FOUND : Inverse de %NOTFOUND.
%ROWCOUNT : Nombre de lignes lues dans le curseur.
%ISOPEN : Booléen. Vrai si le curseur est ouvert.
Dans le cas d'un curseur implicite, on peut utiliser SQL%NOTFOUND par exemple :
FETCH nom_curseur INTO nom_variable ;
IF nom_curseur%NOTFOUND THEN
Dbms_output.put_line ('Fetch a échoué') ;
END IF;
Exemple complet :
DECLARE
CURSOR curart
(prix article.prixunit%TYPE,
qte article.qtestock%TYPE)
IS
SELECT * FROM article
WHERE prixunit > prix
AND Qtestock > qte;
art article%ROWTYPE
BEGIN
OPEN curart(100, 10)
FETCH curart INTO art;
WHILE curart%FOUND LOOP
dbms_output.put_line(art.designation)
FETCH curart INTO art;
END LOOP;
CLOSE curart;
END;