Conception Et Réalisation (Oracle) by Grare Stéphane - HTML preview

PLEASE NOTE: This is an HTML preview only and some elements such as links or page numbers may be incorrect.
Download the book in PDF, ePub, Kindle for a complete version.

Fermeture du curseur

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;