
Un curseur est une zone de contexte en mémoire, ouverte par Oracle pour exécuter une
requête et stocker les résultats. Il existe 2 sortes de curseurs : Implicites et explicites.
C’est une variable dynamique qui prend pour valeur le résultat d’une requête.
Exemple : Afficher la liste des produits (codart, libart, stkphy) pour lesquels le stkphy est
supérieur à un stock donné. Le stock donné sera saisi en dur dans une variable du
programme. On utilisera :
Ø Des variables
Ø Des curseurs paramétrés
Ø %NOTFOUND, %ROWTYPE
Ø dbms_output.put_line()
------------------------------
-- Avec Rowtype sur Curseur --
------------------------------
set serveroutput on;
declare
w_stock number;
cursor c_stock (stock number) is
select codart,libart,stkphy
from produit
where stkphy>w_stock;
r_stock c_stock%rowtype;
begin
w_stock := 500;
open c_stock(w_stock);
dbms_output.put_line('Test : Nombre de lignes traitées = ' ||
c_stock%rowcount);
loop
116
fetch c_stock into r_stock;
exit when c_stock%notfound;
dbms_output.put_line(c_stock%rowcount || ' - '
|| r_stock.codart || ' - '
|| r_stock.libart || ' - '
|| r_stock.stkphy);
end loop;
dbms_output.put_line('Test : Nombre de lignes traitées = ' ||
c_stock%rowcount);
close c_stock;
end;