N.EL FADDOULI N.EL FADDOULI 23. Page 1

Documents pareils
Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Bases de Données Avancées PL/SQL

Bases de données avancées

Cours Bases de données 2ème année IUT

Le Langage SQL version Oracle

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

TP Contraintes - Triggers

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES?

Devoir Data WareHouse

Bases de Données relationnelles et leurs systèmes de Gestion

Intégrité des données

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Le langage procédural PL-PGSQL

Les bases de données

Optimisation SQL. Quelques règles de bases

Corrigés détaillés des exercices

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Support de cours «SGBD»

Cours Bases de données 2ème année IUT

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

PROJET 1 : BASE DE DONNÉES REPARTIES

Oracle Le langage procédural PL/SQL

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Le Langage De Description De Données(LDD)

//////////////////////////////////////////////////////////////////// Administration bases de données

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Vues: définition. Vues: avantages. Vues: inconvénients. Vues: exemple. Vues: syntaxe 08/12/2009

Compétences Business Objects

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Le langage SQL Rappels

Bases de données relationnelles

Intégrité sémantique dans les bases de données relationnelles

CATALOGUE FORMATIONS DOMAINE Bases de données

Bases de données et sites WEB Licence d informatique LI345

Administration des bases de données

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Introduction à JDBC. Accès aux bases de données en Java

Introduction au PL/SQL Oracle. Alexandre Meslé

IFT3030 Base de données. Chapitre 2 Architecture d une base de données

Bases de données et sites WEB

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

SQL Historique

1. Base de données SQLite

CREATION WEB DYNAMIQUE

Département Génie Informatique

Quelques aspects du Relationnel-Objet du SGBD Oracle

BTS/CGO P10 SYSTEME INFORMATION Année

Partie II Cours 3 (suite) : Sécurité de bases de données

Configurer la supervision pour une base MS SQL Server Viadéis Services

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Notes de cours : bases de données distribuées et repliquées

Cours Bases de données 2ème année IUT

Java DataBaseConnectivity

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

TP3 : Creation de tables 1 seance

1 Introduction et installation

Langage SQL : créer et interroger une base

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

Bases de données. Mihaela Mathieu

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Historisation des données

PL langage de programmation côté serveur. SQL à la base : types, expressions, requêtes

OpenPaaS Le réseau social d'entreprise

Gestion des utilisateurs et de leurs droits

Bases de Données Réparties Concepts et Techniques. Matthieu Exbrayat ULP Strasbourg - Décembre 2007

Olivier Mondet

Administration des bases de données. Jean-Yves Antoine

Mysql avec EasyPhp. 1 er mars 2006

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Le langage SQL (première partie) c Olivier Caron

IFT3030 Base de données. Chapitre 1 Introduction

La présente publication est protégée par les droits d auteur. Tous droits réservés.

AGRÉGATION «ÉCONOMIE ET GESTION»

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

I. MySQL : Serveur et SGBD

I4 : Bases de Données

Auto-évaluation Oracle: cours de base

Les transactions 1/46. I même en cas de panne logicielle ou matérielle. I Concept de transaction. I Gestion de la concurrence : les solutions

Django et PostgreSQL sous la charge

Bases de données réparties: Fragmentation et allocation

Initiation à SQL. Le langage de communication avec une base de données relationnelles. Application avec PostgreSQL. Nathalie Camelin 2011/2012

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

Bases de Données Réparties

Structure fonctionnelle d un SGBD

Présentation Windows Azure Hadoop Big Data - BI

Transcription:

Introduction Bloc PL/SQL Déclaration des variable Structure de contrôle Curseurs Les exceptions PL /SQL Les fonctions et procédures Les packages Les triggers 1 Définition d un curseur Déclaration d un curseur Utilisation d un curseur Les curseurs 23 Page 1

Curseur: définition Oracle crée des zones de travail pour exécuter les ordres SQL, stocker leurs résultats et les utiliser: Curseurs Deux types de curseurs: Implicite: créés automatiquement par Oracle lorsque la clause INTO accompagne le SELECT Explicite: crées par le programmeur pour pouvoir traiter le résultat de requêtes retournant plus d un tuple. L utilisation d un curseur explicite nécessite les étapes suivantes 1. Déclaration du curseur : Section 2. Ouverture du curseur: Section 3. Traitement des lignes: Section 4. Fermeture du curseur: Section ou EXCEPTION 24 Curseur: déclaration Déclaration du curseur: CURSOR nom_curseur IS Requête_Select ;. Exemple: employe (, nomemp, sal, ville,, ) CURSOR emp_rabat IS SELECT nomemp, sal FROM employe WHERE ville= 'Rabat' ; 25 Page 2

Curseur: Ouverture L ouverture du curseur amorce l analyse de la clause SELECT et son exécution. La réponse est calculée et rangée dans un espace temporaire. L ouverture du curseur se fait dans la section du bloc OPEN nom_curseur ; Exemple: CURSOR emp_rabat IS SELECT nomemp, sal FROM employe WHERE ville= 'Rabat' ; OPEN emp_rabat ;... 26 Curseur: Accès Aux Données L accès aux données se fait par la clause: FETCH INTO FETCH nom_curseur INTO var1, var2, Le FETCH permet de récupérer un tuple de l ensemble des tuples associés au curseur et stocker les valeurs dans des variables. ibl Pour traiter plusieurs lignes, il faut une boucle. Exemple 1: La table utilisée est : employe (, nomemp, sal, ville,, ) CURSOR emp_rabat IS SELECT nomemp, sal FROM employe WHERE ville='rabat'; nom employe.nomemp%type ; salaire employe.sal %TYPE ; OPEN emp_rabat ; FETCH emp_rabat INTO nom, salaire ; --On récupère le premier enregistrement WHILE emp_rabat%found LOOP -- S'il y a un enregistrement récupéré.. -- Traitement de l'enregistrement récupéré FETCH emp_rabat INTO nom, salaire ; --On récupère l'enregistrement suivant 27 Page 3

Curseur: Accès aux données Exemple 2: CREATE TABLE resultat ( nom char(10), sal number (7,2)) ; CURSOR emp_rabat IS SELECT nomemp, sal FROM employe WHERE ville= 'Rabat'; nom employe.nomemp%type ; salaire employe.sal %TYPE ; OPEN emp_rabat ; FETCH emp_rabat INTO nom, salaire ; WHILE emp_rabat%found LOOP IF salaire >3000 THEN INSERT INTO resultat VALUES ( nom, salaire) ; END IF ; FETCH emp_rabat INTO nom, salaire ; CLOSE emp_rabat ; 28 Curseur: attributs Les attributs d un curseur sont des indicateurs sur l état d un curseur. Quatre attributs permettent d évaluer l état du curseur. %NotFound ( vrai si le dernier FETCH naramené n a aucun tuple). %Found (inverse de %NotFound ) %Rowcount ( compte le nombre de FETCH exécutés sur un curseur ) %Isopen (vrai si le curseur est ouvert) Remarque : Avec un curseur implicite crée par le SGBD Oracle, les mêmes attributs aux colonnes sont disponibles à condition de les préfixer par SQL. Ces attributs réfèrent au dernier curseur implicite utilisé par l application Exemple: SQL%ROWCOUNT: nombre de lignes affectées par une opération sur curseur implicite. 29 Page 4

Utilisation simplifiée des curseurs L'utilisation FOR LOOP remplace OPEN, FETCH et CLOSE. Lorsque le curseur est invoqué, un enregistrement est automatiquement créé avec les mêmes éléments de données que ceux définies dans l instruction select. Exemple: CREATE TABLE resultat ( nom varchar2(10 10), sal number (7,2)) CURSOR employe_rabat IS SELECT nomempl, sal FROM employe WHERE ville= Rabat ; FOR enrg_e IN employe_rabat LOOP IF enrg_e.sal >3000 THEN INSERT INTO resultat VALUES (enrg_e.nomempl, enrg_e.sal) ; END IF ; 30 Exercice Ecrire un bloc PL/SQL permettant de: - Créer deux tables Empl1 et Empl2 qui contiennent les colonnes empno,, ename, sal et deptno de la table Emp. - Utiliser un curseur pour sélectionner les colonnes empno, ename, sal et deptno de tous les employés de la table Emp. - Parcourir ce curseur afin d'insérer dans Empl1 les employés gagnant plus que 1500 $et dans Empl2 les autres employés. - Afficher le nombre de tous les employés dans le curseur. 31 Page 5

L attribut de curseur %ROWTYPE L attribut %ROWTYPE permet de déclarer une variable de même type que l enregistrement ( la ligne ) de la table Syntaxe: Nom_de_variable Exemple: enrg_empl Avec un curseur: CURSOR nom_table%rowtype ; empl%rowtype CURSOR nom_curseur IS Requete_SELECT ; nom_variable nom_curseur%rowtype ; Les éléments de la structure sont identifiés par: nom_variable.nomcolonnenomcolonne La structure est renseignée par le FETCH : FETCH nom_curseur INTO nom_variable 32 L attribut de curseur %ROWTYPE Exemple : CURSOR emp_rabat IS SELECT nomemp, sal FROM employe WHERE ville= 'Rabat'; ligne emp_rabat%rowtype ; OPEN emp_rabat ; FETCH emp_rabat INTO ligne; WHILE emp_rabat%found LOOP IF ligne.sal >3000 THEN INSERT INTO resultat VALUES ( ligne.nomemp, ligne.sal) ; END IF ; FETCH emp_rabat INTO ligne ; CLOSE emp_rabat ; 33 Page 6

Utilisation d une variable de type Record Un record permet de définir des types composites Syntaxe : TYPE nom_record IS RECORD ( nom_ch1 type, nom_ch2 type,..); Déclaration d une variable de ce type: nom_variable nom_record TYPE enrg_empl IS RECORD ( nom employe.nomempl %TYPE, salaire employe.sal %TYPE); e enrg_empl ; 34 Curseur modifiable Un curseur qui comprend plus d une table dans sa définition ne permet pas la modification des tables de BD. Seuls les curseurs définis sur une seule table sans fonction d agrégation et de regroupement peuvent utilisés dans une MAJ: delete, update, insert avec le CURRENT OF CURSOR. 35 Page 7

Curseur modifiable Exemple: : CURSOR ce IS SELECT nomempl, sal, ville FROM employe FOR UPDATE ; nom employe.nomempl %TYPE ; salaire employe.sal %TYPE ; ville employe.ville %TYPE ; OPEN ce ; FETCH ce INTO nom, salaire, ville ; WHILE ce%found LOOP IF ville IS NULL THEN DELETE FROM employe WHERE CURRENT OF ce ; END IF ; FETCH ce INTO nom, salaire, ville ; CLOSE ce; 36 Exercice Vider la table Empl1. Ecrire un bloc PL/SQL /Q permettant de: - Lire deux réel Aet Bavec A B - Utiliser un curseur pour sélectionner les colonnes empno, ename, sal et deptno des employés de la table Emp qui ont un salaire entre Aet B. - Parcourir les lignes de ce curseur afin de les insérer dans Empl1. - Afficher le nombre de tous les employés dans le curseur. 37 Page 8