Les curseurs Explicites sont utilisés pour gérer les requetes SELECT qui doivent rapporter plusieurs lignes.
Un curseur est une zone de mémoire utilisé par le noyau Oracle (analyse et interprétation SQL).
Les curseurs sont définis dans le section DECLARE d'un bloc PL/SQL.
● OPEN = Ouvre le curseur.
● FETCH = Exécute la requête et ramène ligne à ligne (avec utilisation de LOOP).
● CLOSE = Ferme le curseur.
SET SERVEROUTPUT ON;
DECLARE
v_emp scott.emp%rowtype;
CURSOR c_emp IS
SELECT ename, job
FROM scott.emp
WHERE job = 'SALESMAN';
BEGIN
OPEN c_emp;
LOOP
FETCH c_emp INTO v_emp.ename, v_emp.job;
EXIT WHEN c_emp%NOTFOUND;
dbms_output.put_line('Name = '||v_emp.ename || ' Job = ' || v_emp.job);
END LOOP;
CLOSE c_emp;
END; /
|
Dans la partie DECLARE, nous declarons le CURSEUR et la variable v_emp qui fait référence à un enregistrement (ligne) de table de la base. Ici toutes les colonnes de la table EMP du schéma SCOTT. L'attribut %ROWTYPE spécifie la structure d'une ligne de table.
SQL> SET SERVEROUTPUT ON; SQL> DECLARE 2 v_emp scott.emp%rowtype; 3 CURSOR c_emp IS 4 SELECT ename, job 5 FROM scott.emp 6 WHERE job = 'SALESMAN'; 7 BEGIN 8 OPEN c_emp; 9 LOOP 10 FETCH c_emp INTO v_emp.ename, v_emp.job; 11 EXIT WHEN c_emp%NOTFOUND; 12 dbms_output.put_line('Name = '||v_emp.ename || ' Job = ' || v_emp.job); 13 END LOOP; 14 CLOSE c_emp; 15 END; 16 / Name = ALLEN Job = SALESMAN Name = WARD Job = SALESMAN Name = MARTIN Job = SALESMAN Name = TURNER Job = SALESMAN PL/SQL procedure successfully completed. |
| Liens en rapport avec l'article et qui sont susceptibles de vous intéresser |
|
• Oracle PL-SQL Structure d'un BLOC • Oracle PL-SQL SELECT INTO • Oracle PL-SQL Variables %TYPE %ROWTYPE |