Académique Documents
Professionnel Documents
Culture Documents
1
EXEMPLE
Declare
Begin
Update DEPT
Set dname=’MATHS’,
loc=’Dakar’
Where deptno=50;
END ;
SUPPRESSION
Syntaxe
Declare
Begin
Delete From NomTable
Where (Prédicat) ;
End ;
EXEMPLE
Declare
Begin
Delete From Dept
Where deptno=50;
End ;
CURSEURS
2
Un curseur est un pointeur sur cette zone de contexte. PL / SQL contrôle la zone
de contexte via un curseur. Un curseur contient les lignes (une ou plusieurs)
renvoyées par une instruction SQL. L'ensemble de lignes détenues par le curseur
est appelé ensemble actif.
Curseurs implicites
Curseurs explicites
Curseurs implicites
Les curseurs implicites sont automatiquement créés par Oracle chaque fois
qu'une instruction SQL est exécutée, lorsqu'il n'existe pas de curseur explicite
pour cette instruction. Les programmeurs ne peuvent pas contrôler les curseurs
implicites et les informations qu’ils contiennent.
En PL / SQL, vous pouvez faire référence au dernier curseur implicite en tant que
curseur SQL, qui possède toujours des attributs tels
que %FOUND,%ISOPEN,% NOTFOUND et %ROWCOUNT.
%FOUND
1 Renvoie VRAI si une instruction INSERT, UPDATE ou DELETE affecte une ou
plusieurs lignes ou si une instruction SELECT INTO renvoie une ou plusieurs
lignes. Sinon, il retourne FALSE.
3
%NOT FOUND
%ISOPEN
3
Renvoie toujours FALSE pour les curseurs implicites, car Oracle ferme
automatiquement le curseur SQL après l'exécution de l'instruction SQL associée.
% ROWCOUNT
4
Renvoie le nombre de lignes affectées par une instruction INSERT, UPDATE ou
DELETE ou renvoyées par une instruction SELECT INTO.
4
DECLARE
total_rows number(2);
BEGIN
UPDATE DEPT
SET LOC = 'DAKAR'
WHERE DEPTNO=10;
IF sql%notfound THEN
dbms_output.put_line('no DEPT selected');
ELSIF sql%found THEN
total_rows := sql%rowcount;
dbms_output.put_line( total_rows || ' DEPT selected ');
END IF;
END;
/
Résultat
1 DEPT selected
1 row(s) updated.
0.06 seconds
Curseurs explicites
Les curseurs explicites sont des curseurs définis par le programmeur permettant
de mieux contrôler la zone de contexte. Un curseur explicite doit être défini dans
la section déclaration du bloc PL / SQL. Il est créé sur une instruction SELECT
qui renvoie plusieurs lignes.
5
Travailler avec un curseur explicite comprend les étapes suivantes:
Déclarer le curseur
La déclaration du curseur définit le curseur avec un nom et l’instruction
SELECT associée.
Par exemple :
CURSOR c_dept IS
SELECT deptno, dname, loc FROM dept;
Ouvrir le curseur
L'ouverture du curseur alloue la mémoire au curseur et le prépare à extraire les
lignes renvoyées par l'instruction SQL. Par exemple, nous allons ouvrir le
curseur défini ci-dessus comme suit :
OPEN c_dept;
6
Fermer le curseur
Fermer le curseur signifie libérer la mémoire allouée. Par exemple, nous allons
fermer le curseur ouvert ci-dessus comme suit :
CLOSE c_dept;
DECLARE
v_deptno dept.deptno%type;
v_dname dept.dname%type;
v_loc dept.loc%type;
CURSOR c_dept is
SELECT deptno, dname, loc FROM dept;
BEGIN
OPEN c_dept;
LOOP
FETCH c_dept into v_deptno, v_dname, v_loc;
EXIT WHEN c_dept%notfound;
dbms_output.put_line(v_deptno || ' ' || v_dname || ' ' || v_loc);
END LOOP;
CLOSE c_dept;