SGBD-PL\SQL (Procedural Language / Structured Query Language)

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

TP Contraintes - Triggers

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

Bases de données avancées

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

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

CREATION WEB DYNAMIQUE

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

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

Corrigés détaillés des exercices

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

Oracle Le langage procédural PL/SQL

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

Les bases de données

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

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

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

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

Introduction au PL/SQL Oracle. Alexandre Meslé

Devoir Data WareHouse

Bases de Données Avancées PL/SQL

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

Bases de données relationnelles

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

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

PHP 5. La base de données MySql. A. Belaïd 1

A QUOI SERVENT LES BASES DE DONNÉES?

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

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

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

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

Intégrité des données

Administration des bases de données

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

A QUOI SERVENT LES BASES DE DONNÉES?

1. Base de données SQLite

1 Position du problème

Le langage procédural PL-PGSQL

Le Langage SQL version Oracle

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

Olivier Mondet

Pratique et administration des systèmes

SQL Historique

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

Chapitre 5 : Les procédures stockées PL/SQL

Langage SQL : créer et interroger une base

Le Langage De Description De Données(LDD)

Historisation des données

PHP. PHP et bases de données

Création et Gestion des tables

Ora2Pg. Présentation, bonnes pratiques et futur du projet

Quelques aspects du Relationnel-Objet du SGBD Oracle

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

BTS/CGO P10 SYSTEME INFORMATION Année

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

Support de cours «SGBD»

I4 : Bases de Données

TP3 : Creation de tables 1 seance

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

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

Mysql avec EasyPhp. 1 er mars 2006

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

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

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

Partie 0 : Gestion des tablespace et des utilisateurs... 3

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Présentation Windows Azure Hadoop Big Data - BI

Introduction au Système de Gestion de Base de Données et aux Base de Données

OpenPaaS Le réseau social d'entreprise

Introduction aux Bases de Données 2004/2005

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Les BASES de DONNEES dans WampServer

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

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)

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

I. MySQL : Serveur et SGBD

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

Hala Skaf-Molli. Nancy-Université 14 mai 2007

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Bases de Données Réparties

Cours SQL. Base du langage SQL et des bases de données

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

Auto-évaluation Oracle: cours de base

Compétences Business Objects

Gestion des utilisateurs et de leurs droits

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

Bases de données élémentaires Maude Manouvrier

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

Attaques applicatives

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

BASES DE DONNEES TP POSTGRESQL

Mysql. Les requêtes préparées Prepared statements

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

Modernisation, développement d applications et DB2 sous IBM i Technologies, outils et nouveautés Volubis.fr

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

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

PDO : PHP Data Object 1/13

Transcription:

SGBD-PL\SQL (Procedural Language / Structured Query Language) Chapitre 4 : Gestion des exceptions Faîçal Felhi felhi_fayssal@yahoo.fr

Introduction Lors de l exécution d un bloc PL/SQL, certaines erreurs peuvent se produire. Les conditions de ces erreurs sont appelés des exceptions Oracle distingue deux types d exception : Les exceptions internes Les exceptions utilisateur (User-Exceptions) 2

Introduction Les exceptions internes Détectées implicitement par le serveur Oracle Elles sont libellées et codées (ORA-XXXXX) Deux types d exception internes : Nommées (ou Prédéfinies) Anonymes (ou Non prédéfinies) 3

Introduction Les exceptions utilisateur Détectées explicitement par le développeur Elles sont définies dans la section DECLARE Une exception non traitée, interne ou utilisateur, provoque l échec du bloc PL/SQL Pour se protéger contre ces situations, il est possible de gérer ces exceptions. La gestion d une exception consiste à prévoir un traitement approprié qui absorbe ou résout l erreur. L endroit de ce traitement est la section EXCEPTION 4

Gestion des exceptions En cas d une exception rencontrée dans la section exécutable d un bloc le contrôle passe immédiatement à la section EXCEPTION du même bloc pour chercher si un gestionnaire approprié existe DECLARE Recherche d un gestionnaire approprié EXECPTION END; Erreur 5

Comment gérer une exception? Gérer une exception c est prévoir un traitement correspondant à l erreur rencontrée Pourquoi gérer une exception? Transformer un échec en succès Eviter la propagation de l exception vers les blocs parents Où gérer une exception? Tout bloc PL/SQL prévoit une section optionnelle de gestion des exceptions 6

Syntaxe -- corps du bloc EXCEPTION WHEN Nom_ExceptionTHEN Instructions; -- gestionnaire d exception WHEN [WHEN OTHERS THEN ;] END;-- fin du bloc Nom_Exception : interne ou utilisateur 7

8 Exemple DECLARE V_Cnom Chercheur.Cnom%TYPE; SELECT Cnom INTO V_Cnom FROM Chercheur WHERE Labno =10; DBMS_OUTPUT.PUT_LINE ( Nom Chercheur V_Cnom); Exception WHEN TOO_MANY_ROWS THEN DBMS_OUTPUT.PUT_LINE ( Plusieurs chercheurs Trouvés. ); --Utiliser un curseur explicite END;

Exceptions prédéfinies (internes) Elles sont prédéfinies par Oracle Elles possèdent des noms significatifs Elles sont automatiquement provoquées Les exceptions les plus courantes sont les suivantes : Exception DUP_VAL_ON_INDEX (ORA-00001): Enregistrement existe déjà (MàJ) Exception NO_DATA_FOUND (ORA-01403): Pas de données Exception TOO_MANY_ROWS (ORA-01422): Select retourne plusieurs lignes Exception VALUE_ERROR (ORA-06502): N est pas de même type ou NULL Exception INVALID_NUMBER (ORA-01722): Conversion d'une chaîne de caractères en un nombre échoue parce que la chaîne ne représente pas un nombre valide. Exception ZERO_DIVIDE (ORA-01476): Diviser un nombre par zéro Exception INVALID_CURSOR (ORA-01722): Curseur qui n'est pas autorisé, comme la fermeture d'un curseur non ouvert. 9

Exception DUP_VAL_ON_INDEX (ORA-00001) Condition de provocation : lorsqu une commande SQL tente d insérer une valeur dupliquée dans une colonne définie avec un index unique (UNIQUE INDEX ou PRIMARY KEY) Exemple : cas d insertion avec duplication de clé primaire INSERT INTO Etudiant (NumETUD, NomETUD, FilETUD) VALUES (10, Dupont, Informatique ); EXCEPTION WHEN DUP_VAL_ON_INDEX THEN DBMS_OUTPUT.PUT_LINE ( Insertion rejetée :NumETUD existe déjà. ); END; 10

11 Exception NO_DATA_FOUND (ORA-01403) Condition de provocation : lorsqu un curseur implicite d interrogation ne retourne aucune ligne Exemple : cas de recherche d un étudiant inexistant DECLARE ETUDIANT_REC ETUDIANT%ROWTYPE; V_NumETUD ETUDIANT.NumETUD%TYPE :=10; SELECT * INTO ETUDIANT_REC FROM ETUDIANTWHERE NumETUD=V_NumETUD; EXECPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE ( Etudiant 10 Inexistant ); END; Remarque : L absence d un gestionnaire pour l exception NO_DATA_FOUND entraîne une sortie du bloc avec échec

12 ExceptionTOO_MANY_ROWS (ORA-01422) Condition de provocation : lorsqu un curseur implicite d interrogation identifie plus qu un seul n-uplet à retourner Exemple : plusieurs étudiants ayant la même filière DECLARE V_NomETUD ETUDIANT.NomETUD%TYPE; SELECT NomETUD INTOV_NomETUD FROM ETUDIANTWHERE FilETUD= Informatique ; EXECPTION WHENTOO_MANY_ROWS THEN DBMS_OUTPUT.PUT_LINE ( Plusieurs étudiants trouvés. ); END;

ExceptionVALUE_ERROR (ORA-06502) Condition de provocation : en cas de troncature (arrondi) ou d erreur de conversion Exemple :Affectation générant une troncature DECLARE V_messageVARCHAR2 (10); V_message := Chaîne trop longue ; EXCEPTION WHENVALUE_ERROR THEN DBMS_OUTPUT.PUT_LINE ( Erreur de troncature ); END; 13

Exception INVALID_NUMBER (ORA-01722) Condition de provocation : lorsqu une commande SQL spécifie un nombre invalide Exemple DECLARE V_mgrVARCHAR2 (4); UPDATE EMP SET MGR =V_mgr WHERE empno=7902; EXCEPTION WHEN INVALID_NUMBERTHEN DBMS_OUTPUT.PUT_LINE ( Exception INVALID_NUMBER ); END; 14

Exception ZERO_DIVIDE (ORA-01476) Condition de provocation : tentative de division par ZERO Exemple DECLARE V_nombre1 int :=10; V_nombre2 int :=5; V_resultat number (5,3); V_resultat := 100/(V_nombre1-2*V_nombre2); EXCEPTION WHEN ZERO_DIVIDE THEN DBMS_OUTPUT.PUT_LINE ( Exception ZERO_DIVIDE ); END; 15

Exception INVALID_CURSOR (ORA-01722) Condition de provocation : au moment ou un curseur fermé est référencé dans une opération de lecture (FETCH), de fermeture (CLOSE) ou via des attributs (%FOUND, %NOTFOUND, %ROWCOUNT) Exceptions génériques OTHERS Condition de provocation : toute exception non gérée WHEN OTHERS doit être la dernière 16

Exceptions utilisateur: crées et gérés par l utilisateur. Syntaxe DECLARE Nom_exception EXCEPTION; IF Condition THEN RAISE Nom_exception; END IF; EXCEPTION WHEN Nom_ExceptionTHEN Instructions; -- gestionnaire d exception WHEN [WHEN OTHERS THEN ;] 17 END;-- fin du bloc

Exemple DECLARE V_nb_ch Number; Exception_no_ch Exception; SELECT count(*) INTO v_nb_ch FROM Chercheur; IF v_nb_ch = 0 THEN RAISE exception_no_ch; END IF; Exception WHEN exception_no_chthen DBMS_OUTPUT.PUT_LINE ( La table chercheur est vide. ); END; 18