sql pour oracle

576
SQL pour Oracle Applications avec Java, PHP et XML Christian Soutou SQL pour Oracle Applications avec Java, PHP et XML 3 è édition 3 è édition Avec 50 exercices corrigés

Upload: yasser-el-harbili

Post on 15-Jul-2015

543 views

Category:

Education


15 download

TRANSCRIPT

  • SQLpour

    OracleApplications avec Java, PHP et XML

    Christian Soutou

    SQLpour

    OracleApplications avec Java, PHP et XML

    3 dition

    3 dition

    SQLp

    ourOra

    cle

    C.

    Souto

    u

    Code

    dite

    ur :

    G122

    99

    ISBN

    : 97

    8-2-

    212-

    1229

    9-2

    29E

    Christian Soutou est matre de confrences l'universit Toulouse Le Mirail et dirige le dpar-tement Rseaux et Tlcoms de lIUT de Blagnac. Il intervient autour des bases de donnes et destechnologies de l'information (XML, services Web et SOA) en licence et master professionnels. Il est galement l'auteur des ouvrages Apprendre SQL avec MySQL et UML 2 pour les bases dedonnes, parus aux ditions Eyrolles.

    Apprendre SQL par lexempleTout particulirement conu pour les tudiants et les dbutants, cet ouvrage permet d'acqurir les notionsessentielles du langage SQL par le biais d'Oracle, leader des systmes de gestion de bases de donnes. Conciset de difficult progressive, il est maill de nombreux exemples et de 50 exercices corrigs qui illustrent tousles aspects fondamentaux de SQL. Couvrant les versions 11 g, 10 g et 9i d'Oracle, il permet galement de sefamiliariser avec les principales fonctionnalits de ce logiciel, ainsi qu'avec les API les plus utilises (JBDC etPHP). Mise jour et augmente, la troisime dition de cet ouvrage consacre en outre un chapitre l'interop-rabilit entre SQL et XML (documents et grammaires) et la gestion de ressources avec XML DB Repository.

    qui sadresse cet ouvrage ? tous ceux qui souhaitent s'initier SQL, Oracle ou la gestion de bases de donnes Aux dveloppeurs C, C++, Java, PHP et XML qui souhaitent stocker leurs donnes

    Installez vous-mme Oracle !Cet ouvrage dcrit en dtail la procdure d'installation des versions 11 g, 10 g, 10 g Express et 9i d'Oracle.Ces versions peuvent tre tlcharges gratuitement sur le site d'Oracle : destines des fins non commerciales,elles sont compltes et sans limitation de dure.

    Au sommaireIntroduction. Installation d'Oracle. Les interfaces SQL *Plus. Partie I : SQL de base. Dfinition des don-nes. Manipulation des donnes. volution dun schma. Interrogation des donnes. Contrle des donnes. Partie II :PL/SQL. Bases du PL/SQL. Programmation avance. Partie III : SQL avanc. Le prcompilateurPro*C/C++. Linterface JDBC. Lapproche SQLJ. Procdures stockes et externes. Oracle et le Web (Web Toolkit, PSP,API PHP). Oracle XML DB.

    Sur le site www.editions-eyrolles.com Tlchargez le code source des exemples et le corrig des exercices Consultez les mises jour et les complments Dialoguez avec lauteur

    97

    82

    21

    21

    22

    99

    2

    3e d

    ition

    3e d

    ition

    Avec 50 exercicescorrigs

    soutou ok 29/01/08 11:13 Page 1

  • SQLpour

    Oracle3e dition3e dition

  • CHEZ LE MME DITEUR

    Du mme auteur

    C. Soutou. De UML SQL. N11098, 2002, 500 pages.

    C. Soutou. Apprendre SQL avec MySQL. N11915, 2006, 398 pages.

    Autour doracle et de sql

    G. Briard Oracle 10g sous Windows. N11707, 2006, 846 pages.

    R. Bizo Oracle 10g - Administration. N11747, 2005, 744 pages.

    R. Bizo SQL pour Oracle 10g. N12055, 2006, 650 pages.

    R. Bizo PL/SQL pour Oracle 10g. N12056, 2006, 328 pages.

    C. Pierre de Geyer et G. Ponon Mmento PHP et SQL. N11785, 2006, 14 pages.

    G. Briard Oracle9i sous Windows. N11220, 2003, 1040 pages.

    G. Briard Oracle9i sous Linux. N11337, 2003, 894 pages.

    B. Vidal Applications mobiles avec Oracle. N9251, 2001, 686 pages.

    R. Bizo. Oracle9i : SQL et PL/SQL. N11351, 2003, 468 pages.

    M. iSrael. SQL Server 2000. N11027, 2001, 1078 pages.

    M. iSrael. SQL Server 2000. N11027, 2001, 1078 pages.

  • Christian SoutouAvec la participation dOlivier Teste

    SQLpour

    Oracle3e dition3e dition

  • DITIONS EYROLLES61, bd Saint-Germain75240 Paris Cedex 05

    www.editions-eyrolles.com

    Le code de la proprit intellectuelle du 1er juillet 1992 interdit en effet expressment la photocopie usage collectif sans autorisation des ayants droit. Or, cette pratique sest gnralise notamment dans les tablissements denseignement, provoquant une baisse brutale des achats de livres, au point que la possibilit mme pour les auteurs de crer des uvres nouvelles et de les faire diter correctement est aujourdhui menace.En application de la loi du 11 mars 1957, il est interdit de reproduire intgralement ou partiellement le

    prsent ouvrage, sur quelque support que ce soit, sans autorisation de lditeur ou du Centre Franais dExploitation du Droit de Copie, 20, rue des Grands-Augustins, 75006 Paris. Groupe Eyrolles, 2004, 2005, 2008, ISBN : 978-2-212-12299-2

  • Mise en page : TyPAODpt lgal : fvrier 2008

    N dditeur : 7760Imprim en France

  • ditions Eyrolles V

    Table des matires

    Remerciements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XVII

    Avant-propos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XIXGuide de lecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XIX

    Premire partie : SQL de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXDeuxime partie : PL/SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXTroisime partie : SQL avanc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXAnnexe : bibliographie et webographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XX

    Conventions dcriture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXIContact avec lauteur et site Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XXI

    Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1SQL, une norme, un succs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1Modle de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    Tables et donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2Les cls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3Un peu dhistoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4Offre du moment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5Notion de schma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Accs Oracle depuis Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8Dtail dun numro de version. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    Installation dOracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Mise en uvre dOracle9i . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Dsinstallation de la 9i. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Mise en uvre dOracle 10g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12Dsinstallation de la 10g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Mise en uvre dOracle 10g Express Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16Mise en uvre dOracle 11g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16Dsinstallation de la 11g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    Les interfaces SQL*Plus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Premiers pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24Variables denvironnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 propos des accents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    SOUTOU Livre Page V Vendredi, 25. janvier 2008 1:08 13

  • SQL pour Oracle Table des matires

    VI ditions Eyrolles

    Partie I SQL de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

    1 Dfinition des donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Tables relationnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

    Cration dune table (CREATE TABLE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31Casse et commentaires. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Premier exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Contraintes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Conventions recommandes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Types des colonnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Structure dune table (DESC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Commentaires stocks (COMMENT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40Classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41Index B-tree. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41Index bitmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42Index bass sur des fonctions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42Cration dun index (CREATE INDEX) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    Tables organises en index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Destruction dun schma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    2 Manipulation des donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51Insertions denregistrements (INSERT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51Renseigner toutes les colonnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52Renseigner certaines colonnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52Ne pas respecter des contraintes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53Dates/heures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53Caractres Unicode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56Donnes LOB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    Squences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57Cration dune squence (CREATE SEQUENCE) . . . . . . . . . . . . . . . . . . . . . . . . . . 58Manipulation dune squence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60Modification dune squence (ALTER SEQUENCE). . . . . . . . . . . . . . . . . . . . . . . . . 61Visualisation dune squence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62Suppression dune squence (DROP SEQUENCE) . . . . . . . . . . . . . . . . . . . . . . . . . 63

    Modifications de colonnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63Syntaxe (UPDATE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63Modification dune colonne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64Modification de plusieurs colonnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64Ne pas respecter des contraintes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64Dates et intervalles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

    SOUTOU Livre Page VI Vendredi, 25. janvier 2008 1:08 13

  • ditions Eyrolles VII

    Table des matires SQL pour Oracle

    Suppressions denregistrements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70Instruction DELETE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70Instruction TRUNCATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

    Intgrit rfrentielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71Cohrences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71Contraintes ct pre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Contraintes ct fils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Cls composites et nulles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73Cohrence du fils vers le pre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74Cohrence du pre vers le fils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74En rsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

    Flottants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76Valeurs spciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77Fonctions pour les flottants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

    3 volution dun schma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85Renommer une table (RENAME). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85Modifications structurelles (ALTER TABLE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

    Ajout de colonnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86Renommer des colonnes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86Modifier le type des colonnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87Supprimer des colonnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88Colonnes UNUSED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88

    Modifications comportementales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89Ajout de contraintes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89Suppression de contraintes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90Dsactivation de contraintes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92Ractivation de contraintes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94

    Contraintes diffres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97Directives DEFERRABLE et INITIALLY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97Instructions SET CONSTRAINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99Instruction ALTER SESSION SET CONSTRAINTS . . . . . . . . . . . . . . . . . . . . . . . . . 99Directives VALIDATE et NOVALIDATE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99Directive MODIFY CONSTRAINT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101Colonne virtuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102Table en lecture seule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

    4 Interrogation des donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

    Syntaxe (SELECT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110Pseudo-table DUAL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

    Projection (lments du SELECT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111Extraction de toutes les colonnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112Extraction de certaines colonnes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

    SOUTOU Livre Page VII Vendredi, 25. janvier 2008 1:08 13

  • SQL pour Oracle Table des matires

    VIII ditions Eyrolles

    Alias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113Duplicatas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113Expressions et valeurs nulles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114Ordonnancement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114Concatnation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115Pseudo-colonne ROWID. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115Pseudo-colonne ROWNUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116Insertion multiligne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

    Restriction (WHERE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117Oprateurs de comparaison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118Oprateurs logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118Oprateurs intgrs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

    Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120Caractres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121Numriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124Dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126Autres fonctions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

    Regroupements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128Fonctions de groupe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129tude du GROUP BY et HAVING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

    Oprateurs ensemblistes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134Oprateur INTERSECT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134Oprateurs UNION et UNION ALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135Oprateur MINUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135Ordonner les rsultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136Produit cartsien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

    Jointures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139Classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140Jointure relationnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140Jointures SQL2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140Types de jointures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141quijointure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141Autojointure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143Inquijointure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144Jointures externes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145Jointures procdurales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150Jointures mixtes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154Sous-interrogations synchronises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155Autres directives SQL2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

    SOUTOU Livre Page VIII Vendredi, 25. janvier 2008 1:08 13

  • ditions Eyrolles IX

    Table des matires SQL pour Oracle

    Division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159Dfinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160Classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160Division inexacte en SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161Division exacte en SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

    Requtes hirarchiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162Point de dpart du parcours (START WITH). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163Parcours de larbre (CONNECT BY PRIOR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163Indentation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164lagage de larbre (WHERE et PRIOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165Jointures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167Ordonnancement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167Nouveauts 10g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

    Mises jour conditionnes (fusions) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172Syntaxe (MERGE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172Exemple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173Nouveauts 10g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173Exemple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174

    Expressions rgulires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175Quelques exemples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177Fonction REGEXP_LIKE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177Fonction REGEXP_REPLACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180Fonction REGEXP_INSTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181Fonction REGEXP_SUBSTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183Nouveauts 11g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

    Extractions diverses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185Directive WITH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185Fonction WIDTH_BUCKET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

    5 Contrle des donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193Gestion des utilisateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

    Classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194Cration dun utilisateur (CREATE USER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194Modification dun utilisateur (ALTER USER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196Suppression dun utilisateur (DROP USER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197Profils. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198Console Enterprise Manager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

    Privilges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206Privilges systme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206Privilges objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209Privilges prdfinis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

    Rles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214Cration dun rle (CREATE ROLE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215Rles prdfinis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216

    SOUTOU Livre Page IX Vendredi, 25. janvier 2008 1:08 13

  • SQL pour Oracle Table des matires

    X ditions Eyrolles

    Console Enterprise Manager. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217Rvocation dun rle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218Activation dun rle (SET ROLE). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219Modification dun rle (ALTER ROLE). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220Suppression dun rle (DROP ROLE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

    Vues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221Cration dune vue (CREATE VIEW) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222Classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224Vues monotables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224Vues complexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229Autres utilisations de vues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232Transmission de droits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236Modification dune vue (ALTER VIEW) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236Suppression dune vue (DROP VIEW) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236

    Synonymes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237Cration dun synonyme (CREATE SYNONYM) . . . . . . . . . . . . . . . . . . . . . . . . . . . 237Transmission de droits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239Suppression dun synonyme (DROP SYNONYM) . . . . . . . . . . . . . . . . . . . . . . . . . . 239

    Dictionnaire des donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239Constitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240Classification des vues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240Dmarche suivre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241Principales vues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243Objets dun schma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245Structure dune table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245Recherche des contraintes dune table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246Composition des contraintes dune table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246Dtails des contraintes rfrentielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246Recherche du code source dun sous-programme . . . . . . . . . . . . . . . . . . . . . . . . . . 247Recherche des utilisateurs dune base de donnes . . . . . . . . . . . . . . . . . . . . . . . . . 248Rles reus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

    Partie II PL/SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

    6 Bases du PL/SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

    Environnement client-serveur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255Avantages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256Structure dun programme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256Porte des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257Jeu de caractres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258Identificateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258Commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

    SOUTOU Livre Page X Vendredi, 25. janvier 2008 1:08 13

  • ditions Eyrolles XI

    Table des matires SQL pour Oracle

    Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259Variables scalaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260Affectations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261Variables %TYPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261Variables %ROWTYPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262Variables RECORD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263Variables tableaux (type TABLE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264Rsolution de noms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266Oprateurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266Variables de substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267Variables de session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268Conventions recommandes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268

    Types de donnes PL/SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269Types prdfinis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269Sous-types. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269Conversions de types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271Nouveauts 11g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271

    Structures de contrles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272Structures conditionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272Structures rptitives. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275Nouveaut 11g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279

    Interactions avec la base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280Extraire des donnes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280Manipuler des donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282Curseurs implicites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284Paquetage DBMS_OUTPUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285

    Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288Caractristiques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288Dbut et fin dune transaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289Contrle des transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290Transactions imbriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

    7 Programmation avance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295Sous-programmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

    Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295Procdures catalogues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296Fonctions catalogues. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297Codage dun sous-programme PL/SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298Exemples. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298Compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301Appels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 propos des paramtres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303Rcursivit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304

    SOUTOU Livre Page XI Vendredi, 25. janvier 2008 1:08 13

  • SQL pour Oracle Table des matires

    XII ditions Eyrolles

    Sous-programmes imbriqus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304Recompilation dun sous-programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306Destruction dun sous-programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306

    Paquetages (packages) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306Spcification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307Compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308Implmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308Appel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309Surcharge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309Recompilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309Destruction dun paquetage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309

    Curseurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310Parcours dun curseur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311Utilisation de structures (%ROWTYPE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312Boucle FOR (gestion semi-automatique) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313Utilisation de tableaux (type TABLE). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314Paramtres dun curseur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315Accs concurrents (FOR UPDATE et CURRENT OF) . . . . . . . . . . . . . . . . . . . . . . . 315Variables curseurs (REF CURSOR) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

    Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319Exception interne prdfinie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321Exception utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325Utilisation du curseur implicite. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327Exception interne non prdfinie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328Propagation dune exception. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329Procdure RAISE_APPLICATION ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331

    Dclencheurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 quoi sert un dclencheur ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333Mcanisme gnral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334Dclencheurs LMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335Transactions autonomes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347Dclencheurs LDD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348Dclencheurs dinstances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348Appels de sous-programmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349Gestion des dclencheurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350Ordre dexcution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351Tables mutantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351Nouveauts 11g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352

    SOUTOU Livre Page XII Vendredi, 25. janvier 2008 1:08 13

  • ditions Eyrolles XIII

    Table des matires SQL pour Oracle

    SQL dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356Classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357Utilisation de EXECUTE IMMEDIATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357Utilisation dune variable curseur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359

    Partie III SQL avanc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363

    8 Le prcompilateur Pro*C/C++. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365

    Ordres SQL intgrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366Variable indicatrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367Cas du VARCHAR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368Zone de communication (SQLCA). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368Connexion une base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369Gestion des exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370

    Extraction dun enregistrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370Mises jour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372Utilisation de curseurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372

    Variables scalaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372Variables tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373

    Utilisation de Microsoft Visual C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375

    9 Linterface JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377

    Classification des pilotes (drivers) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377Les paquetages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378Structure dun programme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380Variables denvironnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380Test de votre configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381

    Connexion une base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382Base Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382Base Oracle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383Dconnexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385Interface Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385

    tats dune connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386Interfaces disponibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386Mthodes gnriques pour les paramtres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387tats simples (interface Statement). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387Mthodes utiliser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388

    Correspondances de types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389

    SOUTOU Livre Page XIII Vendredi, 25. janvier 2008 1:08 13

  • SQL pour Oracle Table des matires

    XIV ditions Eyrolles

    Interactions avec la base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390Suppression de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390Ajout denregistrements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391Modification denregistrements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391

    Extraction de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391Curseurs statiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392Curseurs navigables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393

    Curseurs modifiables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397Suppressions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399Modifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400Insertions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401

    Interface ResultSetMetaData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402Interface DatabaseMetaData . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403Instructions paramtres (PreparedStatement) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404

    Extraction de donnes (executeQuery). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405Mises jour (executeUpdate) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406Instruction LDD (execute) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406

    Appels de sous-programmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407Appel dune fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408Appel dune procdure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408

    Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409Points de validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410

    Traitement des exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411Affichage des erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412Traitement des erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412

    10 Lapproche SQLJ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415

    Blocs SQLJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415Prcompilation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416Configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416Affectations (SET) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418

    Intgration de SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418Instructions du LDD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418Instructions du LMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419Requtes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419 propos des itrateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423

    Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426Intgration de blocs PL/SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426Points de validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427

    Appels de sous-programmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428Rsultats scalaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428Rsultats complexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430

    SOUTOU Livre Page XIV Vendredi, 25. janvier 2008 1:08 13

  • ditions Eyrolles XV

    Table des matires SQL pour Oracle

    Traitement des exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431Dfinition des donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431Manipulation des donnes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432Interrogation des donnes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432

    Contextes de connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433SQL dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435

    Expression. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435Restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436

    11 Procdures stockes et externes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439Procdures stockes Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439

    Stockage dune procdure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440Interactions avec la base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445Dclencheurs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449

    Procdures externes Java. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450Compilation de la classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451Cration dune librairie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451Publication dune procdure externe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451Appel dune procdure externe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452

    12 Oracle et le Web. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453Configuration minimale dApache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453PL/SQL Web Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455

    Dtail dune URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455Paquetages HTP et HTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456Pose dhyperliens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460Formulaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463Listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463

    PL/SQL Server Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464Balises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465Chargement dun programme PSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466Appel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466Interaction avec la base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466

    Intgration de PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468Configuration adopte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468API de PHP pour Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471Interactions avec la base. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473

    13 Oracle XML DB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487Gnralits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487

    Comment disposer de XML DB ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487

    SOUTOU Livre Page XV Vendredi, 25. janvier 2008 1:08 13

  • SQL pour Oracle Table des matires

    XVI ditions Eyrolles

    Le type de donnes XMLType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488Modes de stockage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489

    Stockages XMLType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490Cration dune table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491Rpertoire de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493Grammaire XML Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493Annotation de la grammaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494Enregistrement de la grammaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496Stockage structur (object-relational) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 498Stockage non structur (CLOB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511Stockage non structur (binary XML) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512

    Autres fonctionnalits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516Gnration de contenus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516Vues XMLType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517Gnration de grammaires annotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520Dictionnaire des donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522

    XML DB Repository . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524Paquetage XML_XDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527Accs par SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527

    Annexe : Bibliographie et webographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535

    Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537

    SOUTOU Livre Page XVI Vendredi, 25. janvier 2008 1:08 13

  • ditions Eyrolles XVII

    Remerciements

    Merci Agns Labat, Thierry Millan, Gratien Viel et Olivier Teste qui ont contribu llabo-ration de la premire dition de cet ouvrage en 2005.

    SOUTOU Livre Page XVII Vendredi, 25. janvier 2008 1:08 13

  • SOUTOU Livre Page XVIII Vendredi, 25. janvier 2008 1:08 13

  • ditions Eyrolles XIX

    Avant-propos

    Nombre douvrages traitent de SQL et dOracle ; certains rsultent dune traduction hasar-deuse et sans vocation pdagogique, dautres ressemblent des annuaires tlphoniques. Lessurvivants, bien quintressants, ne sont quant eux plus vraiment jour.Ce livre a t rdig avec une volont de concision et de progression dans sa dmarche ; il estillustr par ailleurs de nombreux exemples et figures. Bien que notre source principale dinfor-mations ft la documentation en ligne dOracle, louvrage ne constitue pas, mon sens, unsimple condens de commandes SQL. Chaque notion importante est introduite par un exemplefacile et dmonstratif (du moins je lespre). la fin de chaque chapitre, des exercices vouspermettront de tester vos connaissances.La documentation dOracle 11g reprsente plus de 1 Go de fichiers HTML et PDF (soitplusieurs dizaines de milliers de pages) ! Ainsi, il est vain de vouloir expliquer tous lesconcepts, mme si cet ouvrage ressemblait un annuaire. Jai tent dextraire les aspectsfondamentaux sous la forme dune synthse. Ce livre rsulte de mon exprience denseigne-ment dans des cursus dinformatique vocation professionnelle (IUT et Master Pro).Cet ouvrage sadresse principalement aux novices dsireux de dcouvrir SQL et de program-mer sous Oracle. Les tudiants trouveront des exemples pdagogiques pour chaque concept abord, ainsi

    que des exercices thmatiques. Les dveloppeurs C, C++, PHP ou Java dcouvriront des moyens de stocker leurs donnes. Les professionnels connaissant dj Oracle seront intresss par certaines nouvelles

    directives du langage.Cette troisime dition ajoute la prcdente les nouvelles fonctionnalits de la version 11gen ce qui concerne SQL, PL/SQL ainsi que la prsentation de XML DB, loutil dOracle quigre (stockage, mise jour et extraction) du contenu XML.

    Guide de lecture

    Ce livre sorganise autour de trois parties distinctes mais complmentaires. La premire int-ressera le lecteur novice en la matire, car elle concerne les instructions SQL et les notions de

    SOUTOU Livre Page XIX Vendredi, 25. janvier 2008 1:08 13

  • SQL pour Oracle

    XX ditions Eyrolles

    base dOracle. La deuxime partie dcrit la programmation avec le langage procduraldOracle PL/SQL. La troisime partie attirera lattention des programmeurs qui envisagentdutiliser Oracle tout en programmant avec des langages volus (C, C++, PHP ou Java) ouvia des interfaces Web.

    Premire partie : SQL de baseCette partie prsente les diffrents aspects du langage SQL dOracle en tudiant en dtail lesinstructions lmentaires. partir dexemples simples et progressifs, nous expliquons notam-ment comment dclarer, manipuler, faire voluer et interroger des tables avec leurs diffrentescaractristiques et lments associs (contraintes, index, vues, squences). Nous tudionsaussi SQL dans un contexte multi-utilisateur (droits daccs), et au niveau du dictionnaire dedonnes.

    Deuxime partie : PL/SQLCette partie dcrit les caractristiques du langage procdural PL/SQL dOracle. Le chapitre 6aborde des lments de base (structure dun programme, variables, structures de contrle, inter-actions avec la base, transactions). Le chapitre 7 traite des sous-programmes, des curseurs, dela gestion des exceptions, des dclencheurs et de lutilisation du SQL dynamique.

    Troisime partie : SQL avancCette partie intressera les programmeurs qui envisagent dexploiter une base Oracle en utili-sant un langage de troisime ou quatrime gnration (C, C++ ou Java), ou en employant uneinterface Web. Le chapitre 8 est consacr ltude des mcanismes de base du prcompilateurdOracle Pro*C/C++. Le chapitre 9 prsente les principales fonctionnalits de lAPI JDBC.Le chapitre 10 dcrit la technologie SQLJ (norme ISO) qui permet dintgrer du code SQLdans un programme Java. Le chapitre 11 traite des procdures stockes et des procduresexternes. Le chapitre 12 est consacr aux techniques quOracle propose pour interfacer unebase de donnes sur le Web (PL/SQL Web Toolkit et PSP PL/SQL Server Pages) ainsi quelAPI PHP. Enfin, le chapitre 13 prsente les fonctionnalits de XML DB et lenvironnementXML DB Repository.

    Annexe : bibliographie et webographieVous trouverez en annexe une bibliographie consacre Oracle ainsi que de nombreux sitesWeb que jai jugs intressants de mentionner ici.

    SOUTOU Livre Page XX Vendredi, 25. janvier 2008 1:08 13

  • ditions Eyrolles XXI

    Avant-propos

    Conventions dcriture

    La police courrier est utilise pour souligner les instructions SQL, noms de types, tables,contraintes, etc. (exemple : SELECT nom FROM Pilote).Les majuscules sont employes pour les directives SQL, et les minuscules pour les autreslments. Les noms des tables, index, vues, fonctions, procdures, etc., sont prcds dunemajuscule (exemple : la table CompagnieAerienne contient la colonne nomComp).Les termes dOracle (bien souvent traduits littralement de langlais) sont nots en italique(exemple : row, trigger, table, column, etc.).Dans une instruction SQL, les symboles { et } dsignent une liste dlments, et lesymbole | un choix (exemple : CREATE { TABLE | VIEW }. Les symboles [ et ] prcisent le caractre optionnel dune directive au sein dune commande (exemple : CREATETABLE Avion () [ORGANISATION INDEX];).

    Ce pictogramme introduit une dfinition, un concept ou une remarque importante. Il apparatsoit dans une partie thorique, soit dans une partie technique, pour souligner des instructionsimportantes ou la marche suivre avec SQL.

    Ce pictogramme annonce soit une impossibilit de mise en uvre dun concept, soit une miseen garde. Il est principalement utilis dans la partie consacre SQL.

    Ce pictogramme indique que le code source est tlchargeable partir du site des ditionsEyrolles (www.editions-eyrolles.com).

    Ce pictogramme indique une astuce ou un conseil personnel.

    Contact avec lauteur et site Web

    Si vous avez des remarques formuler sur le contenu de cet ouvrage, nhsitez pas mcrire([email protected]). Par ailleurs, il existe un site daccompagnement qui contientles errata, complments ainsi que le code des exemples et le corrig de tous les exercices(www.editions-eyrolles.com).

    Web

    SOUTOU Livre Page XXI Vendredi, 25. janvier 2008 1:08 13

  • SOUTOU Livre Page XXII Vendredi, 25. janvier 2008 1:08 13

  • ditions Eyrolles 1

    Introduction

    Cette introduction prsente tout dabord le cadre gnral dans lequel cet ouvrage se positionne(SQL, le modle de donnes et loffre dOracle). Viennent ensuite les procdures dinstallationdes diffrentes ditions dOracle pour Windows actuellement sur le march (9i, 10g ExpressEdition, 10g et 11g). Enfin, lutilisation des interfaces de commandes est aborde pour quevous puissiez programmer avec SQL ds le chapitre 1.

    SQL, une norme, un succs

    Cest IBM, tout seigneur tout honneur, qui, avec System-R, a implant le modle relationnelau travers du langage SEQUEL (Stuctured English as QUEry Language) rebaptis par la suiteSQL (Structured Query Language).La premire norme (SQL1) date de 1987. Elle tait le rsultat de compromis entre construc-teurs, mais fortement influence par le dialecte dIBM. SQL2 a t normalise en 1992. Elledfinit quatre niveaux de conformit : le niveau dentre (entry level), les niveaux intermdiai-res (transitional et intermediate levels) et le niveau suprieur (full level). Les langages SQLdes principaux diteurs sont tous conformes au premier niveau et ont beaucoup de caractris-tiques relevant des niveaux suprieurs. La norme SQL3 (intitule initialement SQL:1999)comporte de nombreuses parties : concepts objets, entrepts de donnes, sries temporelles,accs des sources non SQL, rplication des donnes, etc. (chaque partie tant nomme ISO/IEC 9075-i:2003, i allant de 1 13). La plus rcente partie de la norme de 2006 (ISO/IEC9075-14:2006) est consacr XML.Le succs que connaissent les grands diteurs de SGBD relationnels (IBM, Oracle, Microsoft,Sybase et Computer Associates) a plusieurs origines et repose notamment sur SQL : Le langage est une norme depuis 1986 qui senrichit au fil du temps. SQL peut sinterfacer avec des langages de troisime gnration comme C ou Cobol, mais

    aussi avec des langages plus volus comme C++ et Java. Certains considrent ainsi que lelangage SQL nest pas assez complet (le dialogue entre la base et linterface nest pasdirect) et la littrature parle de dfaut dimpdance (impedance mismatch).

    Les SGBD rendent indpendants programmes et donnes (la modification dune structure dedonnes nentrane pas forcment une importante refonte des programmes dapplication).

    Ces systmes sont bien adapts aux grandes applications informatiques de gestion (archi-tectures type client-serveur et Internet) et ont acquis une maturit sur le plan de la fiabilitet des performances.

    SOUTOU Livre Page 1 Vendredi, 25. janvier 2008 1:08 13

  • SQL pour Oracle

    2 ditions Eyrolles

    Ils intgrent des outils de dveloppement comme les prcompilateurs, les gnrateurs decode, dtats et de formulaires.

    Ils offrent la possibilit de stocker des informations non structures (comme le texte,limage, etc.) dans des champs appels LOB (Large Object Binary).

    Les principaux SGBD Open Source (MySQL, Firebird, Berkeley DB, PostgreSQL) ont adop-ts depuis longtemps SQL pour ne pas rester en marge.Nous tudierons les principales instructions SQL dOracle qui sont classifies dans le tableausuivant.

    Modle de donnes

    Le modle de donnes relationnel repose sur une thorie rigoureuse bien quadoptant des prin-cipes simples. La table relationnelle (relational table) est la structure de donnes de base quicontient des enregistrements, galement appels lignes (rows). Une table est compose decolonnes (columns) qui dcrivent les enregistrements.

    Tables et donnesConsidrons la figure suivante qui prsente deux tables relationnelles permettant de stockerdes compagnies, des pilotes et le fait quun pilote soit embauch par une compagnie :

    Tableau I-1 Classification des ordres SQL

    Ordres SQL Aspect du langageCREATE ALTER DROP COMMENT RENAME TRUNCATE Dfinition des donnes (LDD)INSERT UPDATE DELETE MERGE LOCK TABLE Manipulation des donnes (LMD)SELECT Interrogation des donnes (LID)GRANT REVOKE COMMIT ROLLBACK SAVEPOINT SET TRANSACTION

    Contrle des donnes (LCD)

    Figure I-1 Deux tables

    SOUTOU Livre Page 2 Vendredi, 25. janvier 2008 1:08 13

  • ditions Eyrolles 3

    Introduction

    Les cls

    La cl primaire (primary key) dune table est lensemble minimal de colonnes qui permetdidentifier de manire unique chaque enregistrement.

    Dans la figure prcdente, les colonnes cls primaires sont notes en gras. La colonnecomp reprsente le code de la compagnie et la colonne brevet dcrit le numro du brevet.

    Une cl est dite candidate (candidate key) si elle peut se substituer la cl primaire toutinstant. Une table peut contenir plusieurs cls candidates ou aucune.

    Dans notre exemple, les colonnes nomComp et nom peuvent tre des cls candidates si onsuppose quaucun homonyme nest permis.

    Une cl trangre (foreign key) rfrence dans la majorit des cas une cl primaire dune autretable (sinon une cl candidate sur laquelle un index unique aura t dfini). Une cl trangreest compose dune ou plusieurs colonnes. Une table peut contenir plusieurs cls trangresou aucune.

    La colonne compa (note en italique dans la figure) est une cl trangre, car elle permet derfrencer un enregistrement unique de la table Compagnie via la cl primaire comp.Le modle relationnel est ainsi fondamentalement bas sur les valeurs. Les associations entretables sont toujours binaires et assures par les cls trangres. Les thoriciens considrentcelles-ci comme des pointeurs logiques. Les cls primaires et trangres seront dfinies dansles tables en SQL laide de contraintes.

    Oracle

    Il sera trs difficile, pour ne pas dire impossible, un autre diteur de logiciels de trouver unnom mieux adapt la gestion des donnes que celui d Oracle . Ce nom semble prdestin cet usage ; citons Le Petit Larousse :

    ORACLE n.m. (lat. oraculum) ANTIQ. Rponse dune divinit au fidle qui la consultait ;divinit qui rendait cette rponse ; sanctuaire o cette rponse tait rendue. LITT. Dcisionjuge infaillible et manant dune personne de grande autorit ; personne considrecomme infaillible.

    Oracle reprsenterait ainsi la fois une rponse infaillible, un lieu o serait rendue cetterponse et une divinit. Rien que a ! Tout cela peut tre en partie vrifi si votre conceptionest bien faite, vos donnes insres cohrentes, vos requtes et programmes bien crits.

    SOUTOU Livre Page 3 Vendredi, 25. janvier 2008 1:08 13

  • SQL pour Oracle

    4 ditions Eyrolles

    Ajoutons aussi le fait que les ordinateurs fonctionnent bien et quune personne comptente setrouve au support. Cest tout le mal que nous vous souhaitons.Oracle Corporation, socit amricaine situe en Californie, dveloppe et commercialise unSGBD et un ensemble de produits de dveloppement. Oracle a des filiales dans un grandnombre de pays. La filiale franaise (Oracle France) a t cre en 1986, elle est compose decinq dpartements (marketing, commercial, avant-vente, conseil et formation).

    Un peu dhistoireEn 1977, Larry Ellison, Bob Miner et Ed Oates fondent la socit Software DevelopmentLaboratories (SDL). Larticle de Edgar Frank Codd (1923-2003), A Relational Model ofData for Large Shared Data Banks , Communications of the ACM paru en 1970, fait devenirle mathmaticien et ancien pilote de la RAF durant la Seconde Guerre mondiale, inventeur dumodle relationnel et de SQL. Les associs de SDL devinent le potentiel des concepts de Coddet se lancent dans laventure en baptisant leur logiciel Oracle . En 1979, SDL devient Rela-tional Software Inc. (RSI) qui donnera naisssance la socit Oracle Corp. en 1983. Lapremire version du SGBD sappelle RSI-1 et utilise SQL. Le tableau suivant rsume la chro-nologie des versions.

    Avec IBM, Oracle a fait un pas vers lobjet en 1997, mais cette approche ne compte toujourspas parmi les priorits des clients dOracle. Lditeur met plus en avant ses aspects transac-tionnels, dcisionnels, de partitionnement et de rplication. Les technologies lies Java, bien

    Tableau I-2 Chronologie des versions dOracle

    1979 Oracle 2 Premire version commerciale crite en C/assembleur pour Digital pas de mode transactionnel.

    1983 Oracle 3 Rcrit en C - verrous.1984 Oracle 4 Portage sur IBM/VM, MVS, PC transaction (lecture consistante).1986 Oracle 5 Architecture client-serveur avec SQL*Net version pour Apple.1988 Oracle 6 Verrouillage niveau ligne sauvegarde/restauration AGL PL/SQL.1991 Oracle 6.1 Parallel Server sur DEC.1992 Oracle 7 Contraintes rfrentielles procdures catalogues dclencheurs version

    Windows en 1995.1994 Serveur de donnes vido.1995 Connexions sur le Web.1997 Oracle 8 Objet-relationnel partitionnement LOB Java.1998 Oracle 8i i comme Internet, SQLJ Linux XML.2001 Oracle9i Services Web serveur dapplications architectures sans fil.2004 Oracle10g g comme Grid computing (ressources en clusters).2007 Oracle11g Auto-configuration.

    SOUTOU Livre Page 4 Vendredi, 25. janvier 2008 1:08 13

  • ditions Eyrolles 5

    Introduction

    quelles soient largement prsentes sous Oracle9i, ne constituent pas non plus la majeurepartie des applicatifs exploits par les clients dOracle.La version 10g renforce le partage et la coordination des serveurs en quilibrant les chargesafin de mettre disposition des ressources rparties (rpond au concept de linformatique lademande). Cette ide est dj connue sous le nom de mise en grappe des serveurs (cluste-ring). Une partie des fonctions majeures de la version 10g est prsente dans la version 9i RAC(Real Application Cluster).La version 11g Oracle insiste sur les capacits dauto-diagnostic, dauto-administration etd'auto-configuration pour optimiser la gestion de la mmoire et pour pouvoir faire remonterdes alertes de dysfonctionnement. En raison des exigences en matire de traabilit et du dsir decapacit de dcision (datamining), la quantit de donnes gres par les SGBD triplant tous les deuxans, 11g met aussi laccent sur la capacit optimiser le stockage.

    Offre du moment

    Leader du march des SGBD relationnels, Oracle disposait dune part comprise entre 44 %(source IDC) et 47 % (source Gartner) en 2006, contre environ 21 % pour IBM et 18 % pourMicrosoft. Oracle devrait tre bien arm en 2008 (anne probable de la Release 2 de la version 11g)face SQL Server 2008 de Microsoft, un des rares SGBD lui grignoter des parts de march.Face la monte en puissance des SGBD Open Source, fin 2005, Oracle (puis IBM, Sybase etMicrosoft avec SQL Server 2005 Express) ragit en proposant le premier, une version gratuitedu SGBD (Oracle 10g Express Edition) mais bride en nombre de processeurs, denregistrements(4 Go) et despace mmoire (1 Go). Aucun diteur ne veut tre absent du march trs importantdes PME, sensible aux cots et particulirement rceptif aux promesses de lOpen Source. La figure suivante schmatise les produits dOracle qui se positionnent autour du serveur dedonnes (SGBD) :

    Figure I-2 Offre Oracle

    SOUTOU Livre Page 5 Vendredi, 25. janvier 2008 1:08 13

  • SQL pour Oracle

    6 ditions Eyrolles

    Le langage SQL est utilis explicitement par toute personne (ou par un outil) travaillant sur labase de donnes (administrateur, dveloppeur, utilisateur). Le langage PL/SQL est le langageprocdural dOracle. Il permet dincorporer nativement tout ordre SQL dans un programme.Les interfaces SQL*Plus sont le moyen minimal (plutt spartiate mais efficace) pour seconnecter et travailler avec la base. Le middleware OracleNet permet dinterconnecter desbases Oracle distantes entre elles ainsi que des bases non Oracle.Les prcompilateurs permettent dintgrer SQL dans des programmes C, Fortran, COBOL,C++, etc. Linterface OCI (Oracle Call Interface) permet daccder la base de donnes partir de langages de troisime gnration via des primitives de bas niveau.Les produits Designer, Forms et Reports sont des outils daide la conception et de crationdapplications interactives ou dtats de tous types (crans, rapports, batchs gnrs en PL/SQL, HTML ou VB).Les produits Developer et JDeveloper sont des outils de dveloppement dapplications client-serveur ou Internet-intranet.Les produits Discoverer et Express sont spcialiss dans la gestion des info centres et desentrepts de donnes (datawarehouses). Les utilisateurs ont la possibilit dinterroger la baseen construisant graphiquement des requtes.Lintgration dune machine virtuelle Java rebaptise Jserver sous Oracle8i dmontre lavolont dOracle dinclure largement Java dans son offre. Oracle a ajout par la suite un ORB(Object Request Broker) son moteur pour souvrir au protocole IIOP (Inter Object RequestBroker) et supporter les composants EJB (Enterprise Java Beans). Le serveur Apache, inclusdepuis peu au moteur dOracle, permet de programmer des applets, servlets ou des JSP (JavaServer Pages). Enfin, le moteur accepte de conserver et de compiler des procdures stockescodes non plus en PL/SQL mais en Java.Oracle offre galement des outils dadministration en mode graphique. Les plus connuspermettant dexporter et dimporter des donnes, de charger une base partir de fichiers exter-nes (SQL*Loader), de configurer les couches rseaux (Net Manager et Net ConfigurationAssistant). La console principale se nomme Oracle Enterprise Manager. Elle permet dadmi-nistrer graphiquement une ou plusieurs bases de donnes locales ou distantes.Oracle est compos de plusieurs domaines, cet ouvrage concerne simplement une infimepartie du serveur de donnes.

    Serveur de donnes (la base)Oracle Database est disponible en plusieurs versions qualifies de Standard ou Enterprise . Le nom du produit monoposte pour Windows ou Linux est Personal Oracle.Plusieurs options permettent de renforcer les performances, la scurit, le traitement transac-tionnel et le datawarehouse. Citons Oracle Data Guard, Oracle Real Application Clusters,Oracle Partitioning, Oracle Advanced Security, Oracle Label Security, Oracle DiagnosticsPack, Oracle Tuning Pack, Oracle OLAP, Oracle Data Mining, Oracle Spatial.

    SOUTOU Livre Page 6 Vendredi, 25. janvier 2008 1:08 13

  • ditions Eyrolles 7

    Introduction

    Serveur dapplicationsOracle Application Server est un des serveurs dapplications compatible J2EE les pluscomplets et intgrs du march. OracleAS regroupe des composants divers : serveur HTTP,portail (Portal), fonctions vocales et sans fil (Wireless), mise en cache des pages Web, etc.

    Outils de dveloppementLes outils sont regroups dans une offre appele Developer Suite comprenant pour la partieApplication Developement : JDeveloper, Forms Developer (outil RAD pour PL/SQL), Desi-gner (conception et maintenance de schmas), Software Configuration Manager. La partieBusiness Intelligence inclut : Warehouse Builder, Reports Developer, Discoverer et BusinessIntelligence Beans.

    Suite Bureautique (Collaboration Suite)Cette offre est compose de Oracle Email, Oracle Voicemail & Fax, Oracle Calendar, OracleFiles Management, Oracle Ultra Search, Oracle Wireless & Voice. Cette offre permet dutili-ser une seule bote de rception pour tous messages lectroniques, vocaux et tlcopies, etlaccs aux messages partir de clients du march, de navigateurs Web, de tlphones oudassistants numriques personnels.

    Suites E-BusinessLoffre E-Business Suite est un progiciel de gestion intgr (ensemble dapplications dentre-prise pour grer les clients, produits, commandes, crances, etc.). La suite E-Business SuiteSpecial Edition est ddie aux PME et permet de prconfigurer E-Business Suite par une tech-nologie Web.

    Externalisation (Applications Outsourcing)Ce produit est relatif au transfert Oracle de la gestion des applications dune entreprise (infogrance). Il est compos de E-Business Suite, Oracle Small Business Suite, iLearning,Exchange. Des services complets de gestion, de bases de donnes et de matriel sont proposspour rduire les cots de maintenance.

    DiversOracle fournit enfin un service de support, de conseil (Oracle Consulting), de formation(Oracle University) et de financement (Oracle Financing).

    Notion de schma

    Un schma est un ensemble comprenant des structures de donnes et des donnes. Il appar-tient un utilisateur de la base et porte le nom de ce dernier. Chaque utilisateur possde ainsi

    SOUTOU Livre Page 7 Vendredi, 25. janvier 2008 1:08 13

  • SQL pour Oracle

    8 ditions Eyrolles

    son propre schma. Leurs lments (Oracle les nomme dune manire gnrique objects) sontcrs et modifis par des ordres SQL.La figure suivante illustre deux utilisateurs travaillant sur leur schma (stock dans un espacede la base) par une interface qui peut tre SQL*Plus (dans la majeure partie des enseigne-ments), ou un langage de programmation citons principalement C, COBOL, C++ ou Java.

    Tous les lments dun schma ne seront pas tudis car certains sont trs spcifiques etsortent du cadre traditionnel de lenseignement. Le tableau suivant indique dans quel chapitredu livre les principaux lments dun schma sont tudis :

    Accs Oracle depuis WindowsUne fois que vous aurez install Oracle sur votre ordinateur, vous serez libre de choisir laccsqui vous convient. Ce livre utilise essentiellement les interfaces SQL*Plus de lditeur, maisaussi Java via JDBC, le Web au travers des techniques dcrites au chapitre 12 et XML avecXML DB.

    Figure I-3 Notion de schma Oracle

    Tableau I-3 lments dun schma Oracle

    lments tudis Chapitre Aspects non tudisDclencheurs (triggers) 7Fonctions, procdures et paquetages 7Librairies de procdures externes 11Index 1Ressources Java 9, 10, 11Squences et synonymes 2, 5Tables et tables en index 1Vues (views) 5XML 13

    ClustersDimensionsLiens de bases de donnes (database links)OprateursTables, types et vues objetsVues matrialises (anciennement clichs )

    SOUTOU Livre Page 8 Vendredi, 25. janvier 2008 1:08 13

  • ditions Eyrolles 9

    Introduction

    Il existe dautres acccs possibles, citons Office (Word, Excel, Powerpoint, Access), VisualStudio, Active Server Pages (ASP) et les environnements .NET. Les passerelles employessappellent ODBC, Oracle OLE DB, Oracle Objects for OLE (OO4O), ActiveX Data Objects(ADO), Oracle Call Interface (OCI), ODBC .NET, Oracle OLE DB .NET, Oracle DataProvider for .NET.

    Dtail dun numro de versionDtaillons la signification du numro de la version 11.1.0.6.0 (premire release de la 11gdisponible sous Windows) : 11 dsigne le numro de la version majeure de la base ; 1 dsigne le numro de version de la maintenance ; 0 dsigne le numro de version du serveur dapplications ; 6 dsigne le numro de version du composant (patch); 0 est le numro de la version de la plate-forme.Pour contrler la version du serveur sur lequel vous tes connect et celle des outils prsentssur votre poste, excutez le script suivant dans une interface SQL*Plus :COL PRODUCT FORMAT A35COL VERSION FORMAT A15COL STATUS FORMAT A15SELECT * FROM PRODUCT_COMPONENT_VERSION;

    Installation dOracle

    Rendez-vous prsent sur le site dOracle o vous devrez dabord vous enregistrer (