SlideShare une entreprise Scribd logo
1  sur  11
Copyright © Oracle Corporation, 2001. Tous droits réservés.
Concepts avancés sur les
curseurs explicites
Copyright © Oracle Corporation, 2001. Tous droits réservés.
7-2
Objectifs
A la fin de ce chapitre, vous pourrez :
• écrire un curseur utilisant des paramètres
• déterminer dans quels cas une clause FOR
UPDATE doit être utilisée dans un curseur
• déterminer dans quels cas la clause WHERE
CURRENT OF doit être utilisée
• écrire un curseur utilisant une sous-interrogation
Copyright © Oracle Corporation, 2001. Tous droits réservés.
7-3
Curseurs paramétrés
Syntaxe :
• Transmettre des paramètres au curseur au moment
de son ouverture et de l'exécution de l'interrogation
• Ouvrir un curseur explicite à plusieurs reprises, en
renvoyant un ensemble actif différent à chaque fois
CURSOR cursor_name
[(parameter_name datatype, ...)]
IS
select_statement;
OPEN cursor_name(parameter_value,.....) ;
Copyright © Oracle Corporation, 2001. Tous droits réservés.
7-4
Curseurs paramétrés
Transmettre le numéro du service et l'intitulé du poste à
la clause WHERE, dans l'instruction SELECT du curseur
DECLARE
CURSOR emp_cursor
(p_deptno NUMBER, p_job VARCHAR2) IS
SELECT employee_id, last_name
FROM employees
WHERE department_id = p_deptno
AND job_id = p_job;
BEGIN
OPEN emp_cursor (80, 'SA_REP');
. . .
CLOSE emp_cursor;
OPEN emp_cursor (60, 'IT_PROG');
. . .
END;
Copyright © Oracle Corporation, 2001. Tous droits réservés.
7-5
Clause FOR UPDATE
Syntaxe :
• Utiliser un verrouillage explicite pour interdire
l'accès pendant la durée d'une transaction
• Verrouiller les lignes avant la mise à jour ou la
suppression.
SELECT ...
FROM ...
FOR UPDATE [OF column_reference][NOWAIT];
Copyright © Oracle Corporation, 2001. Tous droits réservés.
7-6
Clause FOR UPDATE
Extraire les employés qui travaillent dans le service
80 et mettre à jour leur salaire.
DECLARE
CURSOR emp_cursor IS
SELECT employee_id, last_name, department_name
FROM employees,departments
WHERE employees.department_id =
departments.department_id
AND employees.department_id = 80
FOR UPDATE OF salary NOWAIT;
Copyright © Oracle Corporation, 2001. Tous droits réservés.
7-7
Clause WHERE CURRENT OF
Syntaxe :
• Utiliser les curseurs pour mettre à jour ou
supprimer la ligne en cours
• Inclure la clause FOR UPDATE dans l'interrogation
du curseur pour verrouiller au préalable les lignes
• Utiliser la clause WHERE CURRENT OF pour
référencer la ligne en cours à partir d'un curseur
explicite
WHERE CURRENT OF cursor ;
Copyright © Oracle Corporation, 2001. Tous droits réservés.
7-8
Clause WHERE CURRENT OF
DECLARE
CURSOR sal_cursor IS
SELECT e.department_id, employee_id, last_name, salary
FROM employees e, departments d
WHERE d.department_id = e.department_id
and d.department_id = 60
FOR UPDATE OF salary NOWAIT;
BEGIN
FOR emp_record IN sal_cursor
LOOP
IF emp_record.salary < 5000 THEN
UPDATE employees
SET salary = emp_record.salary * 1.10
WHERE CURRENT OF sal_cursor;
END IF;
END LOOP;
END;
/
Copyright © Oracle Corporation, 2001. Tous droits réservés.
7-9
Curseurs contenant des
sous-interrogations
DECLARE
CURSOR my_cursor IS
SELECT t1.department_id, t1.department_name,
t2.staff
FROM departments t1, (SELECT department_id,
COUNT(*) AS STAFF
FROM employees
GROUP BY department_id) t2
WHERE t1.department_id = t2.department_id
AND t2.staff >= 3;
...
Exemple :
Copyright © Oracle Corporation, 2001. Tous droits réservés.
7-10
Synthèse
Ce chapitre vous a permis d'apprendre à :
• renvoyer des ensembles actifs différents à l'aide
de curseurs paramétrés
• définir des curseurs contenant des sous-
interrogations et des sous-interrogations
corrélées
• manipuler des curseurs explicites à l'aide de
commandes contenant les clauses :
– FOR UPDATE
– WHERE CURRENT OF
Copyright © Oracle Corporation, 2001. Tous droits réservés.
7-11
Présentation de l'exercice 7
Dans cet exercice, vous allez :
• déclarer et utiliser des curseurs explicites
paramétrés
• utiliser un curseur avec la clause FOR UPDATE

Contenu connexe

Similaire à Les07.ppt

Manipulation des Données , cours sql oracle
Manipulation des Données , cours sql oracleManipulation des Données , cours sql oracle
Manipulation des Données , cours sql oraclewebreaker
 
Écriture de Sous-Interrogations Synchronisées | SQL Oracle
Écriture de Sous-Interrogations Synchronisées | SQL OracleÉcriture de Sous-Interrogations Synchronisées | SQL Oracle
Écriture de Sous-Interrogations Synchronisées | SQL Oraclewebreaker
 
Plsql
PlsqlPlsql
PlsqlAz Za
 
chapitre6_Le_Langage_SQL-2.pdf
chapitre6_Le_Langage_SQL-2.pdfchapitre6_Le_Langage_SQL-2.pdf
chapitre6_Le_Langage_SQL-2.pdfattamatta1234
 
L'Ordre SELECT Élémentaire | SQL Oracle
L'Ordre SELECT Élémentaire | SQL OracleL'Ordre SELECT Élémentaire | SQL Oracle
L'Ordre SELECT Élémentaire | SQL Oraclewebreaker
 
Création de Vues | SQL Oracle
Création de Vues | SQL OracleCréation de Vues | SQL Oracle
Création de Vues | SQL Oraclewebreaker
 
Pl/sql - interaction avec la base de données & structures de contrôle
Pl/sql  - interaction avec la base de données & structures de contrôlePl/sql  - interaction avec la base de données & structures de contrôle
Pl/sql - interaction avec la base de données & structures de contrôleAbdelouahed Abdou
 
Sous-Interrogations Multi-colonne | SQL Oracle
Sous-Interrogations Multi-colonne | SQL OracleSous-Interrogations Multi-colonne | SQL Oracle
Sous-Interrogations Multi-colonne | SQL Oraclewebreaker
 
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !Paris Salesforce Developer Group
 
Les Contraintes | SQL Oracle
Les Contraintes | SQL OracleLes Contraintes | SQL Oracle
Les Contraintes | SQL Oraclewebreaker
 

Similaire à Les07.ppt (14)

cours Plsql _ abdelkhalek benhoumine
cours Plsql _ abdelkhalek benhouminecours Plsql _ abdelkhalek benhoumine
cours Plsql _ abdelkhalek benhoumine
 
Manipulation des Données , cours sql oracle
Manipulation des Données , cours sql oracleManipulation des Données , cours sql oracle
Manipulation des Données , cours sql oracle
 
C# 7 - Nouveautés
C# 7 - NouveautésC# 7 - Nouveautés
C# 7 - Nouveautés
 
Écriture de Sous-Interrogations Synchronisées | SQL Oracle
Écriture de Sous-Interrogations Synchronisées | SQL OracleÉcriture de Sous-Interrogations Synchronisées | SQL Oracle
Écriture de Sous-Interrogations Synchronisées | SQL Oracle
 
Plsql
PlsqlPlsql
Plsql
 
chapitre6_Le_Langage_SQL-2.pdf
chapitre6_Le_Langage_SQL-2.pdfchapitre6_Le_Langage_SQL-2.pdf
chapitre6_Le_Langage_SQL-2.pdf
 
Les02.ppt
Les02.pptLes02.ppt
Les02.ppt
 
L'Ordre SELECT Élémentaire | SQL Oracle
L'Ordre SELECT Élémentaire | SQL OracleL'Ordre SELECT Élémentaire | SQL Oracle
L'Ordre SELECT Élémentaire | SQL Oracle
 
Création de Vues | SQL Oracle
Création de Vues | SQL OracleCréation de Vues | SQL Oracle
Création de Vues | SQL Oracle
 
Pl/sql - interaction avec la base de données & structures de contrôle
Pl/sql  - interaction avec la base de données & structures de contrôlePl/sql  - interaction avec la base de données & structures de contrôle
Pl/sql - interaction avec la base de données & structures de contrôle
 
Sous-Interrogations Multi-colonne | SQL Oracle
Sous-Interrogations Multi-colonne | SQL OracleSous-Interrogations Multi-colonne | SQL Oracle
Sous-Interrogations Multi-colonne | SQL Oracle
 
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
 
Introduction a Java
Introduction a JavaIntroduction a Java
Introduction a Java
 
Les Contraintes | SQL Oracle
Les Contraintes | SQL OracleLes Contraintes | SQL Oracle
Les Contraintes | SQL Oracle
 

Dernier

mémoire genie civil presenté lors de la soutenance de mémoire
mémoire genie civil presenté lors de la soutenance de mémoiremémoire genie civil presenté lors de la soutenance de mémoire
mémoire genie civil presenté lors de la soutenance de mémoireEzechiasSteel
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Ville de Châteauguay
 
pdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdf
pdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdfpdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdf
pdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdfMedAbdelhayeSidiAhme
 
le probleme de la planification JSP exposee (2) (2).pptx
le probleme de la planification JSP exposee (2) (2).pptxle probleme de la planification JSP exposee (2) (2).pptx
le probleme de la planification JSP exposee (2) (2).pptximaneeaouattahee
 
Algo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésAlgo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésSana REFAI
 

Dernier (6)

mémoire genie civil presenté lors de la soutenance de mémoire
mémoire genie civil presenté lors de la soutenance de mémoiremémoire genie civil presenté lors de la soutenance de mémoire
mémoire genie civil presenté lors de la soutenance de mémoire
 
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
Présentation_Soirée-Information_ Surverse_Thibert _30 avril 2024
 
JTC 2024 Bâtiment et Photovoltaïque.pdf
JTC 2024  Bâtiment et Photovoltaïque.pdfJTC 2024  Bâtiment et Photovoltaïque.pdf
JTC 2024 Bâtiment et Photovoltaïque.pdf
 
pdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdf
pdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdfpdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdf
pdfcoffee.com_4-production-fond-des-puits-completion-pdf-free.pdf
 
le probleme de la planification JSP exposee (2) (2).pptx
le probleme de la planification JSP exposee (2) (2).pptxle probleme de la planification JSP exposee (2) (2).pptx
le probleme de la planification JSP exposee (2) (2).pptx
 
Algo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigésAlgo II: les files cours + exercices corrigés
Algo II: les files cours + exercices corrigés
 

Les07.ppt

  • 1. Copyright © Oracle Corporation, 2001. Tous droits réservés. Concepts avancés sur les curseurs explicites
  • 2. Copyright © Oracle Corporation, 2001. Tous droits réservés. 7-2 Objectifs A la fin de ce chapitre, vous pourrez : • écrire un curseur utilisant des paramètres • déterminer dans quels cas une clause FOR UPDATE doit être utilisée dans un curseur • déterminer dans quels cas la clause WHERE CURRENT OF doit être utilisée • écrire un curseur utilisant une sous-interrogation
  • 3. Copyright © Oracle Corporation, 2001. Tous droits réservés. 7-3 Curseurs paramétrés Syntaxe : • Transmettre des paramètres au curseur au moment de son ouverture et de l'exécution de l'interrogation • Ouvrir un curseur explicite à plusieurs reprises, en renvoyant un ensemble actif différent à chaque fois CURSOR cursor_name [(parameter_name datatype, ...)] IS select_statement; OPEN cursor_name(parameter_value,.....) ;
  • 4. Copyright © Oracle Corporation, 2001. Tous droits réservés. 7-4 Curseurs paramétrés Transmettre le numéro du service et l'intitulé du poste à la clause WHERE, dans l'instruction SELECT du curseur DECLARE CURSOR emp_cursor (p_deptno NUMBER, p_job VARCHAR2) IS SELECT employee_id, last_name FROM employees WHERE department_id = p_deptno AND job_id = p_job; BEGIN OPEN emp_cursor (80, 'SA_REP'); . . . CLOSE emp_cursor; OPEN emp_cursor (60, 'IT_PROG'); . . . END;
  • 5. Copyright © Oracle Corporation, 2001. Tous droits réservés. 7-5 Clause FOR UPDATE Syntaxe : • Utiliser un verrouillage explicite pour interdire l'accès pendant la durée d'une transaction • Verrouiller les lignes avant la mise à jour ou la suppression. SELECT ... FROM ... FOR UPDATE [OF column_reference][NOWAIT];
  • 6. Copyright © Oracle Corporation, 2001. Tous droits réservés. 7-6 Clause FOR UPDATE Extraire les employés qui travaillent dans le service 80 et mettre à jour leur salaire. DECLARE CURSOR emp_cursor IS SELECT employee_id, last_name, department_name FROM employees,departments WHERE employees.department_id = departments.department_id AND employees.department_id = 80 FOR UPDATE OF salary NOWAIT;
  • 7. Copyright © Oracle Corporation, 2001. Tous droits réservés. 7-7 Clause WHERE CURRENT OF Syntaxe : • Utiliser les curseurs pour mettre à jour ou supprimer la ligne en cours • Inclure la clause FOR UPDATE dans l'interrogation du curseur pour verrouiller au préalable les lignes • Utiliser la clause WHERE CURRENT OF pour référencer la ligne en cours à partir d'un curseur explicite WHERE CURRENT OF cursor ;
  • 8. Copyright © Oracle Corporation, 2001. Tous droits réservés. 7-8 Clause WHERE CURRENT OF DECLARE CURSOR sal_cursor IS SELECT e.department_id, employee_id, last_name, salary FROM employees e, departments d WHERE d.department_id = e.department_id and d.department_id = 60 FOR UPDATE OF salary NOWAIT; BEGIN FOR emp_record IN sal_cursor LOOP IF emp_record.salary < 5000 THEN UPDATE employees SET salary = emp_record.salary * 1.10 WHERE CURRENT OF sal_cursor; END IF; END LOOP; END; /
  • 9. Copyright © Oracle Corporation, 2001. Tous droits réservés. 7-9 Curseurs contenant des sous-interrogations DECLARE CURSOR my_cursor IS SELECT t1.department_id, t1.department_name, t2.staff FROM departments t1, (SELECT department_id, COUNT(*) AS STAFF FROM employees GROUP BY department_id) t2 WHERE t1.department_id = t2.department_id AND t2.staff >= 3; ... Exemple :
  • 10. Copyright © Oracle Corporation, 2001. Tous droits réservés. 7-10 Synthèse Ce chapitre vous a permis d'apprendre à : • renvoyer des ensembles actifs différents à l'aide de curseurs paramétrés • définir des curseurs contenant des sous- interrogations et des sous-interrogations corrélées • manipuler des curseurs explicites à l'aide de commandes contenant les clauses : – FOR UPDATE – WHERE CURRENT OF
  • 11. Copyright © Oracle Corporation, 2001. Tous droits réservés. 7-11 Présentation de l'exercice 7 Dans cet exercice, vous allez : • déclarer et utiliser des curseurs explicites paramétrés • utiliser un curseur avec la clause FOR UPDATE