Bases de Données Avancées PL/SQL

Dimension: px
Commencer à balayer dès la page:

Download "Bases de Données Avancées PL/SQL"

Transcription

1 1/170 Bases de Données Avancées Thierry Hamon Bureau H202 - Institut Galilée Tél. : Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR Léonard de Vinci 74, rue Marcel Cachin, F Bobigny cedex Tél. : , Fax. : INFO2 BDA

2 2/170 Communication avec un SGBD utilisant SQL Introduction

3 3/170 Solution complète Oracle Introduction

4 4/170 Clauses SQL Introduction SELECT INSERT UPDATE DELETE CREATE ALTER DROP RENAME TRUNCATE GRANT REVOKE COMMIT ROLLBACK SAVEPOINT Interrogation des données Langage de Manipulation de Données (LMD) Langage de Définition de Données (LDD) Langage de Contrôle de Données (LCD) Contrôle de transaction

5 5/170 Procedural Language for Structured Query Language Introduction Langage fournissant une interface procédurale au SGBD Oracle Intègration du langage SQL en lui apportant une dimension procédurale Réalisation de traitements algorithmiques (ce que ne permet pas SQL) Mise à disposition de la plupart des mécanismes classiques de programmation des langages hôtes tels que C, COBOL, PASCAL, C++, JAVA...

6 6/170 Environnement Introduction

7 7/170 Avantages de Introduction complément de SQL (qui n est pas procédural) Mécanismes offerts par : Structures itératives : WHILE *** LOOP, FOR *** LOOP, LOOP *** Structures conditionnelles : IF *** THEN *** ELSE ELSEIF *** ENDIF, CASE *** Déclaration des curseurs et des tableaux Déclaration de variables Affectation de valeurs aux variables Branchements : GOTO, EXIT Exceptions : EXCEPTION

8 8/170 Avantages de Intégration Introduction Meilleure cohérence du code avec les données Utilisation de librairies standards prédéfinies (bibliothèques partagées)

9 9/170 Avantages de Blocs SQL Introduction Traitement par/de blocs SQL dans un énoncé (optimisation des transactions réseaux)

10 10/170 Avantages de Exécution de programmes modulaires Introduction Traitements complexes (cas particuliers, erreurs) Traitements des exceptions...

11 11/170 Avantages de Résumé Introduction Langage portable Utilisation de variable de stockage Utilisation de type simple ou de type structuré dynamiquement (%TYPE, %ROWTYPE, etc.) Utilisation des structures de contrôle des langages procéduraux Gestion et manipulation des erreurs Création d ordre SQL dynamique

12 12/170 Utilisation de Structure de blocs 3 formes : Bloc de code, executé comme une commande SQL (utilisation d un interpréteur standard SQL+ ou isql*plus) Fichier de commande Programme stocké : procédure, fonction, package ou trigger

13 13/170 Structure d un bloc Structure de blocs S e c t i o n d é c l a r a t i v e, o p t i o n n e l l e DECLARE V a r i a b l e s, c u r s e u r s, e x c e p t i o n s,... S e c t i o n e x é c u t a b l e, o b l i g a t o i r e BEGIN I n s t r u c t i o n s SQL e t P o s s i b i l i t é s de b l o c s f i l s ( i m b r i c a t i o n de b l o c s ) S e c t i o n de t r a i t e m e n t des e x c e p t i o n s, o p t i o n n e l l e EXCEPTION o p t i o n n e l l e Traitement des e x c e p t i o n s ( g e s t i o n des e r r e u r s ) Terminaison du bloc, o b l i g a t o i r e END ; /

14 14/170 Type de blocs Structure de blocs Bloc anonyme Précédure Fonction

15 15/170 Type de blocs Bloc anonyme Structure de blocs Structure classique (1 à 3 sections) Un bloc ne peut être vide. Il doit contenir une instruction (il peut donc contenir l instruction NULL) [ DECLARE ] BEGIN I n s t r u c t i o n s [ EXCEPTION] END; /

16 16/170 Type de blocs Bloc anonyme Exemple 1 Structure de blocs DECLARE x INTEGER; BEGIN x := 1 ; END;

17 17/170 Type de blocs Bloc anonyme Exemple 2 Structure de blocs DECLARE v a r x VARCHAR2( 5 ). BEGIN SELECT nom colonne INTO v a r x FROM nom table EXCEPTION WHEN nom exception THEN... END ; /

18 18/170 Type de blocs Procédure Structure de blocs Bloc nommé puis compilé et stocké dans la base PROCEDURE nom I S BEGIN I n s t r u c t i o n s [ EXCEPTION] END; /

19 19/170 Type de blocs Procédure Exemple PROCEDURE p r o c e x e m p l e IS v a r x VARCHAR2( 5 ) ; BEGIN SELECT nom colonne INTO v a r x FROM nom table EXCEPTION WHEN n o m e x c e p t i o n THEN... END ; / Commande SQL qui Structure de blocs crée la procédure compile et stocke dans la base le bloc compris entre le BEGIN et le END, référencé par proc exemple

20 20/170 Type de blocs Procédure Structure de blocs Remarques : Exécution (auto) de la procédure : SQL> EXECUTE proc_exemple Pas d exécution de procédure (ou d instructions) en fin de transaction (COMMIT, ROLLBACK, Ordre DDL) Décision d enregistrement ou d annulation de la transaction en cours : à réaliser par le programme appelant la procédure

21 21/170 Type de blocs Fonction Structure de blocs Fonction : procédure retournant une valeur FUNCTION nom RETURN t y p e d o n n é e s IS BEGIN I n s t r u c t i o n s RETURN v a l e u r ; [ EXCEPTION] END; /

22 22/170 Type de blocs Fonction exemple Structure de blocs SQL> CREATE OR REPLACE FUNCTION s o l d e ( no INTEGER) RETURN REAL IS l e s o l d e REAL ; BEGIN SELECT s o l d e INTO l e s o l d e FROM c l i e n t s WHERE n o c l i = no ; RETURN l e s o l d e ; END; /

23 23/170 Remarques : Type de blocs Fonction Utilisation de fonction au sein d une requête SQL Exemple : SQL> SELECT solde(1000) FROM dual ; Solde(1000) ,50 Appel d une fonction comme une procédure provoque une erreur Exemple : fonction mdp(integer) SQL> execute mdp(2); BEGIN mdp(2); END; * ERREUR a la ligne 1 : ORA-06550: line 1, column 7: PLS-00221: MDP is not a procedure or is undefined ORA-06550: line 1, column 7: Structure de blocs

24 24/170 Types de variables Structure de blocs Variables locales Constantes Composites Références Variables de l environnement extérieur à Attachées (Bind) Hôtes (Host)

25 25/170 Structure de blocs Déclaration des variables en Syntaxe I d e n t i f i c a t e u r [CONSTANT] t y p e d o n n é e s [NOT NULL] [:= e x p r e s s i o n ] ; Exemple DECLARE v d a t e n a i s s a n c e DATE; v departement NUMBER( 2 ) NOT NULL := 1 0 ; v v i l l e VARCHAR2(13) := P a r i s ; c cumul CONSTANT NUMBER := 1000;

26 26/170 Assignation des variables Structure de blocs Syntaxe I d e n t i f i c a t e u r := e x p r ; Exemples Affecter la date de naissance du fils d un employés v d a t e n a i s s a n c e := 23 SEP 2004 ; Fixer le nom d un employé à Clément v nom := Clément ;

27 27/170 Types de données scalaires Types de base chaînes de caractères Structure de blocs VARCHAR2(n)/NVARCHAR2(n) : Chaîne de n caractères (n < 4000octets) longueur variable (préfixe N : prise en compte de la localisation NLS/National Language Support) CHAR(n)/NCHAR(n) : Chaîne de n caractères (n < 2000octets) longueur fixe, rempli par des espaces LONG/RAW/LONG RAW : Chaîne de caractère ou de données binaires (raw) de longueur variable ( < 2000octets)

28 28/170 Types de données scalaires Types de base nombres et date Structure de blocs NUMBER (n, m) : Réel avec n chiffres significatifs et m décimals INTERGER/FLOAT : Nombre entier/réel signé BINARY_INTEGER : Nombre entier signé sur 32 bits (utilisation de la librairie mathématique) DATE : date entre le 1 janvier et le 21 décembre 9999 BOOLEAN : booléen NB : pas d équivalent en SQL. Il n est donc pas possible de stocker un booléen dans une table de sélectionner un élément de table dans un variable booléenne d utiliser un booléen dans une requête SQL ou une fonction appelée dans une requête SQL (paramètre en entrée ou valeur de retour)

29 29/170 Structure de blocs Déclaration des variables scalaires Exemples v j o b VARCHAR2( 9 ). v c o u n t BINARY INTEGER := 0 ; v s a l t o t a l NUMBER( 9, 2 ). v d a t e DATE := SYSDATE +7; v t a u x t a x e CONSTANT NUMBER( 3, 2 ) := ; v v a l i d e BOOLEAN NOT NULL := TRUE;

30 30/170 Attribut %TYPE Structure de blocs Définition : déclaration d une variable associée à Une colonne d une table dans la BD Une variable précédemment définie Exemples : v nom emp. nom%type; v s a l a n n u e l NUMBER( 7, 2 ) ; v s a l m e n s u e l v s a l a n n u e l %TYPE := 2000;

31 31/170 Types de données composites Structure de blocs Types : Les tables Les records (voir plus loin)

32 32/170 Variables attachées/bind variables Variables attachées Variables de substitution dans les requêtes SQL Variable référençant des variables non- Economie d analyse de la requête, donc gain de temps pour Oracle Mécanisme considéré par certains comme le point clé de performance d Oracle

33 33/170 Variables attachées/bind variables Déclaration Variables attachées Déclaration, en SQL*Plus, d une variable attachée : utilisation de la commande VARIABLE Exemple : VARIABLE n o m v a r i a b l e t y p e v a r i a b l e ; VARIABLE g s a l m e n s u e l NUMBER( 7, 2 ) ;

34 34/170 Variables attachées/bind variables Référence aux variables non- Variables attachées Exemple : Stocker le salaire mensuel dans une variable globale SQL*Plus : g s a l m e n s u e l := v s a l a n n u e l / 1 2 ; Faire référence aux variables non- comme des variables hôte Précéder la référence par un :

35 35/170 Variables attachées/bind variables Exemple d utilisation optimisation Variables attachées Exemple de requête SELECT générées des milliers de fois : SELECT fname, lname, pcode FROM c u s t WHERE i d = 674; SELECT fname, lname, pcode FROM c u s t WHERE i d = 234; SELECT fname, lname, pcode FROM c u s t WHERE i d = 332;... A chaque soumission d un requête, Vérification si la requête a déjà été été soumise Si oui, récupération du plan d exécution de la requête, et exécution de la requête

36 36/170 Variables attachées/bind variables Exemple d utilisation optimisation Variables attachées Si non, analyse syntaxique de la requête définition des différentes possibilités d exécution définition du plan d exécution optimal Processus coûteux en temps CPU, alors que seule la valeur de id change! Solution : réutiliser le plan d exécution existant Nécessite d utiliser des variables attachées : Substitution de la valeur par la variable attaché Envoi de la même requête pour toutes les valeurs de id Exemple : SELECT fname, lname, pcode FROM c u s t WHERE i d = : c u s t n o ;

37 37/170 Bloc syntaxe et directives Bloc Les instructions peuvent être écrites sur plusieurs lignes. Les unités lexicales peuvent être séparées par des espaces : Délimiteurs Identificateurs Littéraux (ou constantes) Commentaires

38 38/170 Bloc syntaxe et directives Bloc Les littéraux Les dates et les chaînes de caractères délimitées par deux simples cotes V nom := T h i e r r y ; v a n n e e := to number ( t o c h a r ( v D a t e F i n P e r i o d e, YY ) ) ; Les nombres peuvent être des valeurs simples ou des expressions V s a l a i r e := ;

39 39/170 Commentaires dans le code Bloc Précéder un commentaire écrit sur une seule ligne par --. Placer un commentaire écrit sur plusieurs lignes entre les symboles /* et */. Exemple : v s a l NUMBER( 9, 2 ) ; BEGIN / C e c i e s t un commentaire q u i peut e t r e e c r i t s u r p l u s i e u r s l i g n e s / ENd; C e c i e s t un commentaire s u r une l i g n e

40 40/170 Les Fonctions SQL en Bloc Les fonctions sur les nombres Les fonctions sur les chaînes de caractères Les fonctions de conversion de type de données Les fonctions de dates

41 41/170 Exemples de fonctions SQL en Bloc Exemples : Recomposer l adresse d un employé : V AdrComplete : = V Rue CHR( 3 2 ) V V i l l e CHR( 3 2 ) V CodePostal ; Convertir le nom en majuscule V Nom := UPPER (V Nom) ; Extraction d une partie de la chaîne V chr := Substr (, 4, 3 ) ; Replacement d une chaîne par une autre V chr := R e p l a c e ( Serv1 / Prod / t b c l i e n t, Prod, V a l i d ) ;

42 42/170 Blocs imbriqués et porté des variables Bloc... x BINARY INTEGER ; BEGIN Debut de l a p o r t e e de x... DECLARE y NUMBER; BEGIN debut de l a p o r t e de y... END; f i n de l a p o r t e e de y... END; f i n de l a p o r t e e de x

43 43/170 Opérateurs dans Opérateurs Identique à SQL Logique Arithmétique Concaténation Parenthèses pour contrôler l ordre des opérations Opérateur supplémentaire : Opérateur d exponentiation **

44 44/170 Utilisation des variables liées Opérateurs Pour référencer une variable en, on doit préfixer son nom par un : Exemple : : c o d e r e t o u r := 0 ; IF v é r i f i e r c r é d i t o k ( compt no ) THEN : c o d e r e t o u r := 1 ; END IF ;

45 45/170 Instructions SQL dans Instructions Extraire une ligne de données à partir de la BD par la commande SELECT. Un seul ensemble de valeurs peut être retourné Effectuer des changements aux lignes dans la BD par les commandes du LMD Contrôler des transactions avec les commandes COMMIT, ROLLBACK et SAVEPOINT Déterminer les résultats du LMD avec des curseurs implicites (voir plus loin)

46 46/170 Instruction SELECT dans Instructions Récupérer une donnée de la BD avec SELECT. Syntaxe SELECT l i s t e s é l e c t i o n INTO { nom var [, nom var ]... nom record } FROM table WHERE c o n d i t i o n ;

47 47/170 Instruction SELECT dans Instructions La clause INTO est obligatoire Exemple DECLARE BEGIN... END; v deptno NUMBER( 2 ) ; v l o c VARCHAR2( 1 5 ) ; SELECT deptno, l o c INTO v deptno, v l o c FROM dept WHERE nom d = INFORMATIQUE ;

48 48/170 Instruction SELECT dans Instructions Retourne la somme des salaires de tous les employés d un département donné. Exemple DECLARE BEGIN END; v s o m s a l emp. s a l%type; v deptno NUMBER NOT NULL := 1 0 ; SELECT sum ( s a l ) f o n c t i o n d a g r é INTO v s o m s a l FROM emp WHERE deptno = v deptno ;

49 49/170 Manipulation de données Manipulation de données en Effectuer des mises à jour des tables de la BD utilisant les commandes du LMD : INSERT UPDATE DELETE

50 50/170 Insertion de données Manipulation de données Ajouter les informations d un nouvel employé à la table emp Exemple DECLARE v empno NUMBER NOT NULL := ; BEGIN INSERT INTO emp ( empno, emp nom, poste, deptno ) VALUES ( v empno, Clément, D i r e c t e u r, 1 0 ) ; END;

51 51/170 Mise à jour de données Manipulation de données Augmenter le salaire de tous les employés dans la table emp qui ont le poste d enseignant. Exemple DECLARE BEGIN END; 1 v a u g m s a l emp. s a l%type := 2000; UPDATE emp SET s a l := s a l + v a u g m s a l WHERE j o b = E n s e i g n a n t ;

52 52/170 Suppression de données Manipulation de données Suppression des lignes appartenant au département 10 de la table emp Exemple DECLARE BEGIN END; v deptno emp. deptno%type := 1 0 ; DELETE FROM emp WHERE deptno = v deptno ;

53 53/170 Structure de contrôle dans Structure de contrôle IF conditionnel : IF THEN END IF ; IF THEN ELSE END IF ; IF THEN ELSIF END IF ; Les boucles : LOOP END LOOP; FOR LOOP END LOOP; WHILE LOOP END LOOP;

54 54/170 Instruction IF Syntaxe Structure de contrôle IF c o n d i t i o n THEN énoncés ; [ ELSIF c o n d i t i o n THEN énoncés ; ] [ ELSE énoncés ; ] END IF ;

55 55/170 Instruction IF Exemple de IF simple Structure de contrôle Mettre le ID de l employé MARK à 101. I F v nom = MARK THEN v ID := 101; END IF ;

56 56/170 IF simple Structure de contrôle Si le nom de l employé est CLEMENT, lui attribuer le poste Enseignant, le département n 102 et une commission de 25 Exemple... IF v nom = Clément THEN v p o s t e := E n s e i g n a n t ; v deptno := 102; v nouv comm := s a l ; END IF ;...

57 57/170 IF-THEN-ELSE Structure de contrôle Si le nom de l employé est CLEMENT, lui attribuer le poste Enseignant, le département n 102 et une commission de 25 Exemple... IF v nom = Clément THEN v p o s t e := E n s e i g n a n t ; v deptno := 102; v nouv comm := s a l ; ELSE DBMS OUTPUT. PUT LINE ( Employé i n e x i s t a n t ) ; END IF ;...

58 58/170 IF-THEN-ELSIF Structure de contrôle Pour une valeur donnée en entrée, retourner une valeur calculée. Exemple... IF v d e b u t > 100 THEN RETURN ( 2 v d e b u t ) ; ELSIF v d e b u t >= 50 THEN RETURN ( 5 v d e b u t ) ; ELSE RETURN (1 v d e b u t ) ; END IF ;...

59 59/170 CASE Structure de contrôle Exemple : s e l e c t i d b c r e x p o, i d g e s t f i n, rownum, case when rownum <= 50 then 1 50 rownum rownum when rownum <= 100 then rownum rownum e l s e p l u s de 100 end from b c r i. t b g s t f i n a n c e m e n t where rownum <= 100 Cette requête permet de retourner un contenu dans une colonne en fonction d une condition

60 60/170 Boucle de base Syntaxe Structure de contrôle LOOP d é l i m i t e u r énoncé 1 ; énoncé.... EXIT [ WHEN c o n d i t i o n ] ; énoncé EXIT END LOOP; When : condition est une variable booléenne ou expression (TRUE, FALSE, ou NULL);

61 61/170 Boucle de base Exemple Insérer 10 articles avec la date d aujourd hui.... v Date DATE; v compteur NUMBER( 2 ) := 1 ; BEGIN... v Date := SYSDATE ; LOOP INSERT INTO a r t i c l e ( Artno, ADate ) VALUES ( v compteur, v Date ) ; v compteur := v compteur + 1 ; EXIT WHEN v compteur > 1 0 ; END LOOP;... Structure de contrôle

62 62/170 Boucle FOR Syntaxe Structure de contrôle FOR i n d i c e IN [ REVERSE ] b o r n e i n f.. Borne sup LOOP énoncé 1 ; énoncé 2 ;..... END LOOP; Utiliser la boucle FOR pour raccourcir le test d un nombre d itérations. Ne pas déclarer l indice, il est déclaré implicitement.

63 63/170 Boucle FOR exemple Structure de contrôle Insérer Nb articles indexés de 1 à Nb avec la date du système en utilisant la boucle FOR. ACCEPT Nb PROMPT Donner l e nombre a r t i c l e :... v Date DATE; BEGIN... v Date := SYSDATE ; FOR i IN 1.. &Nb LOOP INSERT INTO a r t i c l e ( Artno, ADate ) VALUES ( i, v Date ) ; END LOOP;...

64 64/170 Boucle WHILE Syntaxe Structure de contrôle WHILE c o n d i t i o n LOOP énoncé 1 ; énoncé 2 ;..... END LOOP; La condition est évaluée au début de chaque itération Utiliser la boucle WHILE pour répéter des énoncés tant que la condition est vraie

65 65/170 Boucle WHILE Exemple Structure de contrôle ACCEPT p i t e m t o t PROMPT Donner l e t o t a l max de l a c h a t d un a r t i c l e DECLARE v Date DATE; v compteur NUMBER( 2 ) := 1 ; BEGIN... v Date := SYSDATE ; WHILE v compteur <= &p i t e m t o t LOOP INSERT INTO a r t i c l e ( Artno, ADate ) VALUES ( v compteur, v Date ) ; v compteur := v compteur + 1 ; END LOOP;

66 66/170 Boucles imbriquées et Labels Structure de contrôle Imbriquer les boucles à niveaux multiples Utiliser les labels pour distinguer les blocs et les boucles. Quitter la boucle extérieure avec un EXIT référençant le label.

67 67/170 Boucles imbriquées et Labels.... BEGIN << bouc ext >> LOOP v compteur := v compteur + 1 ; EXIT WHEN v compteur > 1 0 ; <<b o u c i n t >> LOOP... EXIT b o u c e x t WHEN t o t a l f a i t = OUI ; q u i t t e r l e s deux b o u c l e s EXIT WHEN i n t f a i t = OUI ; q u i t t e r l a uniquement l a b o u c l e i n t e r n e... END LOOP b o u c i n t ;... END LOOP b o u c e x t ; END;... Structure de contrôle

68 68/170 Types de données complexes Types de données complexes Types : RECORDS TABLES Contiennent des composants internes Sont réutilisables

69 69/170 Records Types de données complexes Contiennent des champs qui sont soit des scalaires, des records ou des tables Structure similaire à des enregistrements dans les langages de programmation classiques Très utiles pour rechercher des lignes de données dans une table et les traiter

70 70/170 Création d un record Types de données complexes Syntaxe TYPE <Nom Enreg> I S RECORD ( Champ1 Type1.. ChampN TypeN ) ; Exemple TYPE TProd I S RECORD ( VRefPro NUMBER( 4 ), VDesPro VARCHAR2( 3 0 ), VPriUni NUMBER( 7, 2 ) ) ;

71 71/170 Attribut %ROWTYPE Types de données complexes Déclaration d une variable associée à une collection de colonnes dans une table ou une vue de la BD le nom de la table doit précéder %ROWTYPE Les champs dans le record prennent leurs noms et types des colonnes de la table ou la vue en question

72 72/170 Attribut %ROWTYPE Exemples Types de données complexes Déclarer une variable pour stocker les mêmes informations concernant une personne telles qu elles sont stockées dans la table PERS p e r s o n n e Pers%ROWTYPE; Déclarer une variable pour stocker les mêmes informations concernant un article telles qu elles sont stockées dans la table ART a r t i c l e Art%ROWTYPE;

73 73/170 Tables Tables Le type de données complexe TABLE offre au développeur un mécanisme pour traiter les tableaux Il se compose de deux colonnes : Une clé primaire de type BINARY_INTEGER Une colonne de type scalaire ou record

74 74/170 Création d une table Tables Syntaxe TYPE <Nom table> IS TABLE OF <type> INDEX BY BINARY INTEGER ; Exemple TYPE type etud nom IS TABLE OF etud. nom%type INDEX BY BINARY INTEGER ; etud nom type etud nom ;

75 75/170 Structure d une table en mémoire Tables Clé primaire Colonne 1 Ritchie 2 Marvin 3 Dennis BINARY INTEGER Scalaire

76 76/170 Créer une table Tables SQL> DECLARE 2 TYPE t y p e e t u d n o m I S TABLE OF v a r c h a r 2 ( 1 0 ) INDEX BY BINARY INTEGER ; 3 etud nom type etud nom ; 4 BEGIN 5 s e l e c t nom 6 i n t o etud nom ( 1 ) 7 from etud 8 where e t u d i d = 6 ; 9 dbms output. p u t l i n e ( etud nom ( 1 ) ) ; 10 dbms output. p u t l i n e ( etud nom ( 2 ) ) ; 11 end ; 12 / mark DECLARE ERREUR à l a l i g n e 1 : ORA 01403: Aucune donnée t r o u v é e ORA 06512: à l i g n e 10

77 77/170 TABLE de RECORDS en Tables Définit une table dont la deuxième colonne est un enregistrement au lieu d un scalaire Pour définir la deuxième colonne : Soit en utilisant l attribut %ROWTYPE Soit en utilisant un record déjà défini

78 78/170 TABLE de RECORDS Exemple 1 Tables DECLARE TYPE type etud nom I S TABLE OF etud%rowtype INDEX BY BINARY INTEGER ; etud nom type etud nom ; BEGIN SELECT nom INTO etud nom ( 1 ). nom FROM etud... END;

79 79/170 TABLE de RECORDS Exemple 2 Tables DECLARE TYPE r e c e t u d I S RECORD( i d etud. e t u d i d%type, nom etud. nom%type ) ; TYPE type etud nom I S TABLE OF r e c e t u d%rowtype INDEX BY BINARY INTEGER ; etud nom type etud nom ; BEGIN SELECT nom INTO etud nom ( 1 ). nom FROM etud... END;

80 80/170 Les curseurs dans SQL Curseurs Un curseur est une zone de travail privée de SQL (zone tampon) Il y a deux types de curseurs: Curseurs implicites Curseurs explicites Oracle utilise les curseurs implicites pour analyser et exécuter les énoncés de SQL Les curseurs explicites sont déclarés explicitement pas le programmeur

81 81/170 Les attributs des curseurs SQL Curseurs Les attributs des curseurs SQL permettent de tester les résultats des énoncés SQL SQL%ROWCOUNT SQL%FOUND SQL%NOTFOUND SQL%ISOPEN Nombre de lignes affecté par l énoncé SQL le plus récent (renvoie un entier). attribut booléen qui prend la valeur TRUE si l énoncé SQL le plus récent affecte une ou plusieurs lignes. attribut booléen qui prend la valeur TRUE si l énoncé SQL le plus récent n affecte aucune ligne. Prend toujours la valeur FALSE parce que ferment les curseurs implicites immédiatement après leur exécution.

82 82/170 Les attributs des curseurs SQL Curseurs Supprimer de la table ITEM des lignes ayant un ordre spécifié. Afficher le nombre de lignes supprimées. Exemple DECLARE BEGIN END; v o r d i d NUMBER := ; DELETE FROM item WHERE o r d i d = v o r d i d ; DBMS OUTPUT. PUT LINE (SQL%ROWCOUNT L i g n e s s u p p r i m é e s ) ; Remarque : ne pas oublier Set ServerOutput on (sous SQLPLUS)

83 83/170 Les curseurs Curseurs Chaque énoncé SQL exécuté par Oracle a son propre curseur : Curseurs implicites : déclarés pour tout énoncé SELECT du LMD ou Curseurs explicites : déclarés et nommés par le programmeur

84 84/170 Contrôle des curseurs explicites Curseurs

85 85/170 Contrôle des curseurs explicites Curseurs

86 86/170 Déclaration des curseurs Syntaxe Curseurs CURSOR nom du curseur IS un énoncé SELECT; Ne pas inclure la clause INTO dans la déclaration du curseur Si le traitement des lignes doit être fait dans un ordre spécifique, on utilise la clause ORDER BY dans la requête

87 87/170 Déclaration des curseurs Exemple Curseurs DECLARE CURSOR C1 IS SELECT RefArt, NomArt, QteArt FROM A r t i c l e WHERE QteArt < 500;

88 88/170 Ouverture du curseur Syntaxe Curseurs OPEN nom du curseur ; Ouvrir le curseur pour exécuter la requête et identifier l ensemble actif Si la requête ne renvoie aucune ligne, aucune exception n aura lieu Utiliser les attributs des curseurs pour tester le résultat du FETCH

89 89/170 Recherche des données dans le curseur Syntaxe Curseurs FETCH nom du curseur INTO [ v a r i a b l e 1, [ v a r i a b l e 2,... ] nom de record ] ; Rechercher les informations de la ligne en cours et les mettre dans des variables.

90 90/170 Recherche des données dans le curseur Exemples Curseurs FETCH c1 INTO v RefArt, v NomArt, v QteArt ;.... OPEN Cur Etud ; LOOP FETCH Cur Etud INTO Rec Etud ; { t r a i t e m e n t s des données r e c h e r c h é e s }... END LOOP;...

91 91/170 Fermeture du curseur Syntaxe Curseurs CLOSE nom du curseur ; Fermer le curseur après la fin du traitement des lignes Rouvrir le curseur si nécessaire On ne peut pas rechercher des informations dans un curseur si ce dernier est fermé

92 92/170 Les attributs du curseur explicite Curseurs Obtenir les informations d état du curseur (CUR EXP) Attribut Type Description CUR EXP%ISOPEN BOOLEAN Prend la valeur TRUE si le curseur est ouvert CUR EXP%NOTFOUND BOOLEAN Prend la valeur TRUE si le FETCH le plus récent ne retourne aucune ligne CUR EXP%FOUND BOOLEAN Prend la valeur TRUE si le FETCH le plus récent retourne une ligne CUR EXP%ROWCOUNT NUMBER Retourne le nombre de lignes traitées jusqu ici

93 93/170 Contrôle des recherches multiples Curseurs Traitement de plusieurs lignes d un curseurs en utilisant une boucle Rechercher une seule ligne à chaque itération Utiliser les attributs du curseur explicite pour tester le succès de chaque FETCH

94 94/170 Attribut %ISOPEN Curseurs La recherche des lignes n est possible que si le curseur est ouvert Utiliser l attribut %ISOPEN avant un FETCH pour tester si le curseur est ouvert ou non Exemple : I F NOT C1%ISOPEN THEN OPEN C1 END IF ; LOOP FETCH C1...

95 95/170 Attributs %FOUND, %NOTFOUND et %ROWCOUNT Curseurs Utiliser l attribut %ROWCOUNT pour fournir le nombre exact des lignes traitées Utiliser les attributs %FOUND et %NOT FOUND pour formuler le test d arrêt de la boucle

96 96/170 Curseurs Attributs %FOUND, %NOTFOUND et NOTFOUND%ROWCOUNT Exemple LOOP FETCH c u r s 1 INTO v e t u d i d, v nom ; IF c u r s 1%ROWCOUNT > 20 THEN... EXIT WHEN c u r s 1%NOTFOUND;... END LOOP;

97 97/170 Obtenir les informations d état du curseur Exemple complet Curseurs DECLARE nom emp. ename%type; s a l a i r e emp. s a l%type; CURSOR C1 IS SELECT ename, NVL( s a l, 0 ) FROM emp ; BEGIN OPEN C1 ; LOOP FETCH C1 INTO nom, s a l a i r e ; EXIT WHEN C1%NOTFOUND; DBMS OUTPUT. PUT LINE ( nom gagne s a l a i r e d o l l a r s ) ; END LOOP; CLOSE C1 ; END;

98 98/170 Les curseurs et les Records Traitement des lignes de l ensemble actif par l affectation des valeurs à des records. Exemple... CURSOR Etud Curs IS SELECT etudno, nom, age, ard FROM etud WHERE age < 2 6 ; Etud Record Etud Curs%ROWTYPE; BEGIN END; OPEN Etud Curs ;... FETCH Etud Curs INTO Etud Record ;... Curseurs

99 99/170 Les boucles FOR des curseurs Syntaxe Curseurs FOR nom record IN nom curseur LOOP t r a i t e m e n t des i n f o r m a t i o n s u t i l i s e r des o r d r e s SQL u t i l i s e r des o r d r e s PL / SQL END LOOP;... Un raccourci pour le traitement des curseurs explicites OPEN, FETCH et CLOSE se font de façon implicite Ne pas déclarer le record, il est déclaré implicitement

100 100/170 Les boucles FOR des curseurs Exemple Curseurs DECLARE CURSOR Cur Etud IS SELECT FROM Etud ; BEGIN FOR Rec Etud IN Cur Etud LOOP DBMS OUTPUT. PUT LINE ( Rec Etud. e t u d i d Rec Etud. nom Rec Etud. adr ) ; END LOOP; END; /

101 101/170 Manipulation des exceptions en Exceptions Le traitement des exceptions : mécanisme pour manipuler les erreurs rencontrées lors de l exécution Possibilité de continuer l exécution si l erreur n est pas suffisamment importante pour produire la terminaison de la procédure Décision de continuer une procédure après erreur : décision que le développeur doit faire en fonction des erreurs possibles

102 102/170 Types des exceptions Exceptions Déclenchées implicitement Exceptions Oracle prédéfinies Exceptions Oracle Non-prédéfinies Déclenchées explicitement Exceptions définies par l utilisateur

103 103/170 Capture des exceptions Syntaxe Exceptions EXCEPTION WHEN e x c e p t i o n 1 [OR e x c e p t i o n 2... ] THEN énoncé1 ; énoncé2 ;... [WHEN e x c e p t i o n 2 [OR e x c e p t i o n 4... ] THEN énoncé3 ; énoncé4 ;... ] [WHEN OTHERS THEN énoncé5 ; énoncé6 ;... ]

104 104/170 Capture des exceptions prédéfinies Exceptions Faire référence au nom dans la partie traitement des exceptions Quelques exceptions prédéfinies : NO DATA FOUND TOO MANY ROWS INVALID CURSOR ZERO DIVIDE DUP VAL ON INDEX

105 105/170 Exceptions prédéfinies Exemple Exceptions BEGIN... EXCEPTION WHEN NO DATA FOUND THEN énoncé1 ; énoncé2 ; DBMS OUTPUT. PUT LINE (TO CHAR ( etudno ) Non v a l i d e ) ; WHEN TOO MANY ROWS THEN énoncé3 ; énoncé4 ; DBMS OUTPUT. PUT LINE ( Données i n v a l i d e s ) ; WHEN OTHERS THEN énoncé5 ; énoncé6 ; DBMS OUTPUT. PUT LINE ( A u t r e s e r r e u r s ) ;

106 106/170 Capture des exceptions définies par l utilisateur Exceptions

107 107/170 Capture des exceptions non-prédéfinies Exemple Exceptions Capture de l erreur n 2291 (violation de la contrainte intégrité). DECLARE c o n t i n t e g r i t v i o l EXCEPTION; PRAGMA EXCEPTION INIT ( c o n t i n t e g r i t v i o l, 2291);... BEGIN... EXCEPTION WHEN c o n t i n t e g r i t v i o l THEN DBMS OUTPUT. PUT LINE ( v i o l a t i o n de c o n t r a i n t e d i n t é g r i t é ) ;... END;

108 108/170 Capture des exceptions définies par l utilisateur Exceptions

109 109/170 Exceptions définies par l utilisateur Exemple Exceptions DECLARE x number : =... ; x t r o p p e t i t EXCEPTION;... BEGIN... IF x < 5 THEN RAISE x t r o p p e t i t ; END IF ;... EXCEPTION WHEN x t r o p p e t i t THEN DBMS OUTPUT. PUT LINE ( l a v a l e u r de x e s t t r o p p e t i t e!! ) ;... END;

110 110/170 Fonctions pour capturer les exceptions Exceptions SQLCODE : Retourne la valeur numérique du code de l erreur SQLERRM : Retourne le message associé au numéro de l erreur

111 111/170 Fonctions pour capturer les exceptions Exemple Exceptions... v c o d e e r r e u r NUMBER; v m e s s a g e e r r e u r VARCHAR2( ) ; BEGIN... EXCEPTION... WHEN OTHERS THEN... v c o d e e r r e u r := SQLCODE; v m e s s a g e e r r e u r := SQLERRM; INSERT INTO e r r e u r s VALUES ( v c o d e e r r e u r, v m e s s a g e e r r e u r ) ; END;

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

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL Cours PL/SQL Langage propre à Oracle basé sur ADA Offre une extension procédurale à SQL PL/SQL permet d utiliser un sous-ensemble du langage SQL des variables, des boucles, des alternatives, des gestions

Plus en détail

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

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS 1. Introduction Nous allons aborder la notion de surcouche procédurale au sein des SGBDS relationnels tels que Oracle (PLSQL)

Plus en détail

Bases de données avancées

Bases de données avancées Bases de données avancées Jean-Yves Antoine LI - Université François Rabelais de Tours Jean-Yves.Antoine@univ-tours.fr UFR Sciences et Techniques IUP SIR Blois Master 1 Bases de Données avancées IUP Blois,

Plus en détail

Considérons une partie d un modèle conceptuel de données avec les schémas d entités. Figure 1: Une partie du modèle conceptuel de données

Considérons une partie d un modèle conceptuel de données avec les schémas d entités. Figure 1: Une partie du modèle conceptuel de données Considérons une partie d un modèle conceptuel de données avec les schémas d entités suivants: EMP(EmpNo, Enom, Job, DirNo, Sal, Prime) DEPT(DeptNo, Dnom, Adr) Où EmpNo est la clé primaire de EMP et DeptNo

Plus en détail

TP Contraintes - Triggers

TP Contraintes - Triggers TP Contraintes - Triggers 1. Préambule Oracle est accessible sur le serveur Venus et vous êtes autorisés à accéder à une instance licence. Vous utiliserez l interface d accés SQL*Plus qui permet l exécution

Plus en détail

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

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 SQL Sommaire : COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 COMMANDES DE MANIPULATION DE DONNEES... 2 COMMANDES DE CONTROLE TRANSACTIONNEL... 2 COMMANDES DE REQUETE DE DONNEES... 2 COMMANDES

Plus en détail

Le Langage SQL version Oracle

Le Langage SQL version Oracle Université de Manouba École Supérieure d Économie Numérique Département des Technologies des Systèmes d Information Le Langage SQL version Oracle Document version 1.1 Mohamed Anis BACH TOBJI anis.bach@isg.rnu.tn

Plus en détail

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes. Les Triggers SQL Didier DONSEZ Université de Valenciennes Institut des Sciences et Techniques de Valenciennes donsez@univ-valenciennes.fr 1 Sommaire Motivations Trigger Ordre Trigger Ligne Condition Trigger

Plus en détail

Oracle Le langage procédural PL/SQL

Oracle Le langage procédural PL/SQL Oracle Le langage procédural PL/SQL Denis Roegel roegel@loria.fr IUT Nancy 2 1998/1999 Sommaire 1 Introduction 3 2 Création de packages 3 2.1 Procédures groupées.........................................

Plus en détail

Testez vos connaissances avec Oracle Forms 11g Niveau débutant Réponses aux questions

Testez vos connaissances avec Oracle Forms 11g Niveau débutant Réponses aux questions Testez vos connaissances avec Oracle Forms 11g Niveau débutant Réponses aux questions Document préparé par Abderrahmane Abed Octobre 2013 Version 1.0 Courriel : aabed@oraweb.ca Site web: www.oraweb.ca

Plus en détail

Apprendre le langage SQL le DDL - 1 / 30 - Apprendre le langage SQL par l exemple

Apprendre le langage SQL le DDL - 1 / 30 - Apprendre le langage SQL par l exemple Apprendre le langage SQL le DDL - 1 / 30 - Apprendre le langage SQL par l exemple Ce document est publié sous licence Creative Commons CC-by-nc-nd. Il ne peut ni être modifié, ni faire l objet d une exploitation

Plus en détail

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

Langage SQL (1) 4 septembre 2007. IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes Langage SQL (1) Sébastien Limet Denys Duchier IUT Orléans 4 septembre 2007 Notions de base qu est-ce qu une base de données? SGBD différents type de bases de données quelques systèmes existants Définition

Plus en détail

Présentation du PL/SQL

Présentation du PL/SQL I Présentation du PL/ Copyright Oracle Corporation, 1998. All rights reserved. Objectifs du Cours A la fin de ce chapitre, vous saurez : Décrire l intéret du PL/ Décrire l utilisation du PL/ pour le développeur

Plus en détail

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

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours Bilan : Des vues à PL/SQL corrigé Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Cas exemple 2 Les tables... 3 Vues et index 4 Privilèges 5 Fonctions

Plus en détail

Devoir Data WareHouse

Devoir Data WareHouse Université Paris XIII Institut Galilée Master 2-EID BENSI Ahmed CHARIFOU Evelyne Devoir Data WareHouse Optimisation, Transformation et Mise à jour utilisées par un ETL Mr R. NEFOUSSI Année 2007-2008 FICHE

Plus en détail

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

Le langage SQL pour Oracle - partie 1 : SQL comme LDD Le langage SQL pour Oracle - partie 1 : SQL comme LDD 1 SQL : Introduction SQL : Structured Query Langage langage de gestion de bases de donn ees relationnelles pour Définir les données (LDD) interroger

Plus en détail

Cours 7 : Langage de définition, manipulation et contrôle des données

Cours 7 : Langage de définition, manipulation et contrôle des données Cours 7 : Langage de définition, manipulation et contrôle des données Objets d une base de données Dans un schéma Tables, vues Index, clusters, séquences, synonymes Packages, procédures, fonctions, déclencheurs

Plus en détail

Introduction au PL/SQL Oracle. Alexandre Meslé

Introduction au PL/SQL Oracle. Alexandre Meslé Introduction au PLSQL Oracle Alexandre Meslé 17 octobre 2011 Table des matières 1 Notes de cours 3 1.1 Introduction au PLSQL............................................ 3 1.1.1 PLSQL.................................................

Plus en détail

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

Bases de Données relationnelles et leurs systèmes de Gestion III.1- Définition de schémas Bases de Données relationnelles et leurs systèmes de Gestion RAPPELS Contraintes d intégrité sous Oracle Notion de vue Typage des attributs Contrainte d intégrité Intra-relation

Plus en détail

Auto-évaluation DB2 for z/os: cours de base

Auto-évaluation DB2 for z/os: cours de base Auto-évaluation DB2 for z/os: cours de base Document: f1067test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION DB2 FOR Z/OS:

Plus en détail

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

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN Département Informatique Laboratoires de bases de données Laboratoire n 6 Programmation SQL par Danièle BAYERS et Louis SWINNEN Ce document est disponible sous licence Creative Commons indiquant qu il

Plus en détail

11. MySQL. Cours Web. MySQL. 11. MySQL. 11. MySQL. Structured Query Language. Lionel Seinturier. Université Pierre & Marie Curie

11. MySQL. Cours Web. MySQL. 11. MySQL. 11. MySQL. Structured Query Language. Lionel Seinturier. Université Pierre & Marie Curie Cours Web Lionel Seinturier Université Pierre & Marie Curie Lionel.Seinturier@lip6.fr Structured Query Language Langage de manipulation des données stockées dans une base de données interrogation/insertion/modification/suppression

Plus en détail

Pour les débutants. langage de manipulation des données

Pour les débutants. langage de manipulation des données Pour les débutants SQL : langage de manipulation des données Les bases de données sont très utilisées dans les applications Web. La création, l interrogation et la manipulation des données de la base sont

Plus en détail

INSIA Bases de données ORACLE 2 SELECT avancé SQL*Plus SQL Developper

INSIA Bases de données ORACLE 2 SELECT avancé SQL*Plus SQL Developper INSIA Bases de données ORACLE SELECT avancé SQL*Plus SQL Developper http://st-curriculum.oracle.com/tutorial/dbxetutorial/index.htm http://st-curriculum.oracle.com/ http://www.oracle.com/ Bertrand LIAUDET

Plus en détail

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

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry Cours 3 Développement d une application BD 1 Plan du cours Gestion de la sécurité des données Optimisation des schémas de bases via la dénormalisation Utilisation de vues Placement du code applicatif dans

Plus en détail

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

//////////////////////////////////////////////////////////////////// Administration bases de données ////////////////////// Administration bases de données / INTRODUCTION Système d informations Un système d'information (SI) est un ensemble organisé de ressources (matériels, logiciels, personnel, données

Plus en détail

Olivier Mondet http://unidentified-one.net

Olivier Mondet http://unidentified-one.net T-GSI Ch.4 Le Langage SQL LDD, LCD Cet exercice guidé reprend le plan suivis lors de l intervention de formation faite pour l académie de Versailles. L objectif principal visait en la présentation du langage

Plus en détail

Web dynamique. Techniques, outils, applications. (Partie C)

Web dynamique. Techniques, outils, applications. (Partie C) Web dynamique Techniques, outils, applications (Partie C) Nadir Boussoukaia - 2006 1 SOMMAIRE 1. MySQL et PHP (20 min) 2. SQL (petits rappels) (20 min) 2 MySQL et PHP Synthèse 3 MySQL et PHP SGBD MySQL

Plus en détail

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

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW Groupe : 322 Exploitation des Banques de données 420-PK6-SL (1-2-1) Étape : 3 Professeur Nom: Marcel Aubin Courriel : maubin@cegep-st-laurent.qc.ca

Plus en détail

Le langage procédural PL-PGSQL

Le langage procédural PL-PGSQL Le langage procédural PL-PGSQL PL/pgSQL est un langage procédural utilisé dans le système de gestion de bases de données PostgreSQL. Objectifs : créer des fonctions standards et triggers, ajouter des structures

Plus en détail

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

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications P.-A. Sunier, HEG-Arc Neuchâtel avec le concours de J. Greub pierre-andre.sunier@he-arc.ch http://lgl.isnetne.ch/

Plus en détail

Les procédures stockées et les fonctions utilisateur

Les procédures stockées et les fonctions utilisateur Les procédures stockées et les fonctions utilisateur Z Grégory CASANOVA 2 Les procédures stockées et les fonctions utilisateur [08/07/09] Sommaire 1 Introduction... 3 2 Pré-requis... 4 3 Les procédures

Plus en détail

Langage SQL : créer et interroger une base

Langage SQL : créer et interroger une base Langage SQL : créer et interroger une base Dans ce chapitre, nous revenons sur les principales requêtes de création de table et d accès aux données. Nous verrons aussi quelques fonctions d agrégation (MAX,

Plus en détail

CREATION WEB DYNAMIQUE

CREATION WEB DYNAMIQUE CREATION WEB DYNAMIQUE IV ) MySQL IV-1 ) Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requêtes vers les bases de données relationnelles. Le serveur de

Plus en détail

Le langage PHP. Walid Belkhir Université de Provence belkhir@cmi.univ-mrs.fr http://www.lif.univ-mrs.fr/ belkhir/

Le langage PHP. Walid Belkhir Université de Provence belkhir@cmi.univ-mrs.fr http://www.lif.univ-mrs.fr/ belkhir/ Le langage PHP Walid Belkhir Université de Provence belkhir@cmi.univ-mrs.fr http://www.lif.univ-mrs.fr/ belkhir/ 1 / 38 Plan 1 Introduction au langage PHP 2 2 / 38 Qu est ce que PHP? langage interprété

Plus en détail

Bases de données et sites WEB

Bases de données et sites WEB Bases de données et sites WEB Cours2 : Sécurité et contrôles d accès Anne Doucet 1 Authentification Autorisation Privilèges Rôles Profils Limitations de ressources Plan Audit Contrôle d accès via les vues

Plus en détail

BD50. Gestion des courses

BD50. Gestion des courses Département Génie Informatique BD50 TP7 : Développement avec le module PL/SQL de 9iAS et DBMS_EPG d'oracle 10G Gestion des courses Françoise HOUBERDON & Christian FISCHER Copyright Mai 2007 Présentation

Plus en détail

Cours de Bases de Données Avancées 2006-2007 Groupe cinema, Rapport 4

Cours de Bases de Données Avancées 2006-2007 Groupe cinema, Rapport 4 1 Annexes Avec ce rapport il faut rendre en annexe le script SQL corrigé qui permet de créer la base de données selon votre modèle relationnel ainsi que de la peupler avec un nombre de tuples suffisant.

Plus en détail

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

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés

Plus en détail

EXCEL. Chapitre 4 : Le langage Visual Basic Application. Claude Duvallet

EXCEL. Chapitre 4 : Le langage Visual Basic Application. Claude Duvallet Chapitre 4 : Le langage Visual Basic Application Claude Duvallet Université du Havre UFR des Sciences et Techniques 25 rue Philippe Lebon BP 540 76058 Le Havre Cedex Courriel : Claude.Duvallet@gmail.com

Plus en détail

Instructions SQL. Première partie : Langage de description et de gestion des données

Instructions SQL. Première partie : Langage de description et de gestion des données Instructions SQL Première partie : Langage de description et de gestion des données Quelques instructions et leur syntaxe 1. Introduction Trois principales catégories d instructions. Instructions de création

Plus en détail

Corrigés détaillés des exercices

Corrigés détaillés des exercices Corrigés détaillés des exercices Diagramme des tables objet La figure suivante vous aidera dans la compréhension des manipulations des objets de la base. Client_type Client num nom adresse {telephone_vry}

Plus en détail

Création et Gestion des tables

Création et Gestion des tables Création et Gestion des tables Version 1.0 Z Grégory CASANOVA 2 Sommaire 1 Introduction... 3 2 Pré-requis... 4 3 Les tables... 5 3.1 Les types de données... 5 3.1.1 Les types de données Sql Server... 5

Plus en détail

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

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5 1. Qu'est-ce que SQL?... 2 2. La maintenance des bases de données... 2 2.1 La commande CREATE TABLE... 3 2.2 La commande ALTER TABLE... 4 2.3 La commande CREATE INDEX... 4 3. Les manipulations des bases

Plus en détail

Bases de données Niveau 1 SQL - MySQL MariaDB - Cours et TP 5 DDL et DML

Bases de données Niveau 1 SQL - MySQL MariaDB - Cours et TP 5 DDL et DML Bases de données Niveau 1 SQL - MySQL MariaDB - Cours et TP 5 DDL et DML MariaDB : https://mariadb.org/ Site officiel MySQL : http://www-fr.mysql.com/ Zone pour les développeurs : http://dev.mysql.com/

Plus en détail

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

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010 ORACLE 10G DISTRIBUTION ET REPLICATION Distribution de données avec Oracle G. Mopolo-Moké prof. Associé UNSA 2009/ 2010 1 Plan 12. Distribution de données 12.1 Génération des architectures C/S et Oracle

Plus en détail

VIII. Interrogation de documents avec XQuery

VIII. Interrogation de documents avec XQuery VIII. Interrogation de documents avec XQuery 350 XQUERY? Est un langage d interrogation de données XML N est pas un dialecte XML Est un sur-ensemble de XPath 2.0 Utilise le même modèle de données (XDM)

Plus en détail

Le Langage De Description De Données(LDD)

Le Langage De Description De Données(LDD) Base de données Le Langage De Description De Données(LDD) Créer des tables Décrire les différents types de données utilisables pour les définitions de colonne Modifier la définition des tables Supprimer,

Plus en détail

Bases de données et sites WEB Cours 3 : SQL3 Langage

Bases de données et sites WEB Cours 3 : SQL3 Langage Bases de données et sites WEB Cours 3 : SQL3 Langage 1 Plan Références Requêtes simples Expressions de chemin Appels de fonctions et d opérateurs Création d instances Opérations sur les collections 2 Références

Plus en détail

Bases de Données & Interfaces Web. stanislas.oger@univ-avignon.fr

Bases de Données & Interfaces Web. stanislas.oger@univ-avignon.fr Bases de Données & Interfaces Web stanislas.oger@univ-avignon.fr 1 Architecture d'un SI Web Fonctionnement Dynamique avec Base de Données 2 Idée Dynamiser les pages avec des infos venant de BDD Enregistrer

Plus en détail

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES? BASE DE DONNÉES OBJET Virginie Sans virginie.sans@irisa.fr A QUOI SERVENT LES BASES DE DONNÉES? Stockage des informations : sur un support informatique pendant une longue période de taille importante accès

Plus en détail

Administration des bases de données

Administration des bases de données Administration des bases de données Mehdi Louizi 1 Pourquoi PL/SQL 2 Pourquoi PL/SQL? PL/SQL = PROCEDURAL LANGUAGE/SQL SQL est un langage non procédural Les traitements complexes sont parfois difficiles

Plus en détail

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

Notes de cours : bases de données distribuées et repliquées Notes de cours : bases de données distribuées et repliquées Loïc Paulevé, Nassim Hadj-Rabia (2009), Pierre Levasseur (2008) Licence professionnelle SIL de Nantes, 2009, version 1 Ces notes ont été élaborées

Plus en détail

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

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées ANNEE 2014 / 2015 Désignation de l enseignement : Bases de données Nom du document : TP SQL sous PostgreSQL Rédacteur :

Plus en détail

Programmation en VBA

Programmation en VBA Programmation en VBA Présentation de Visual Basic Visual Basic : Basic : dérivé du langage Basic (Biginner s All purpose Symbolic Instruction Code) des années 60 Visual : dessin et aperçu de l interface

Plus en détail

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble. Gaëlle PERRIN SID2 Grenoble Le 10/04/2014 Base de Données (BD) : une grande quantité de données, centralisées ou non, servant pour les besoins d'une ou plusieurs applications, interrogeables et modifiables

Plus en détail

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

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ; RÈGLES A SUIVRE POUR OPTIMISER LES REQUÊTES SQL Le but de ce rapport est d énumérer quelques règles pratiques à appliquer dans l élaboration des requêtes. Il permettra de comprendre pourquoi certaines

Plus en détail

SQL Historique 1982 1986 1992

SQL Historique 1982 1986 1992 SQL Historique 1950-1960: gestion par simple fichier texte 1960: COBOL (début de notion de base de données) 1968: premier produit de sgbdr structuré (IBM -> IDMS) 1970-74: élaboration de l'outil d'analyse

Plus en détail

Auto-évaluation Oracle: cours de base

Auto-évaluation Oracle: cours de base Auto-évaluation Oracle: cours de base Document: F0475Test.fm 14/01/2008 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION ORACLE: COURS DE

Plus en détail

Apprendre le langage SQL - Le DML - 1 / 21 - Apprendre le langage SQL par l exemple Partie 2 : le DML

Apprendre le langage SQL - Le DML - 1 / 21 - Apprendre le langage SQL par l exemple Partie 2 : le DML Apprendre le langage SQL - Le DML - 1 / 21 - Apprendre le langage SQL par l exemple Partie 2 : le DML Ce document est publié sous licence Creative Commons CC-by-nc-nd. Il ne peut ni être modifié, ni faire

Plus en détail

PHP & BD. PHP & Bases de données. Logiciels & matériels utilisés. Bases de données et Web

PHP & BD. PHP & Bases de données. Logiciels & matériels utilisés. Bases de données et Web PHP & Bases de données La quantité de données utilisée par certains sites web nécessite l'utilisation d'une base de données Il faut donc disposer d'un SGBD (mysql, postgresql, oracle, ) installé sur un

Plus en détail

2011 Hakim Benameurlaine 1

2011 Hakim Benameurlaine 1 Table des matières 1 CRÉATION DES OBJETS DE BASES DE DONNÉES... 2 1.1 Architecture d une base de données... 2 1.1.1 Niveau logique... 2 1.1.2 Niveau physique... 3 1.2 Gestion d une base de données... 3

Plus en détail

Bases de données relationnelles

Bases de données relationnelles Bases de données relationnelles Système de Gestion de Bases de Données Une base de données est un ensemble de données mémorisé par un ordinateur, organisé selon un modèle et accessible à de nombreuses

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Génie Logiciel avec Ada. 4 février 2013

Génie Logiciel avec Ada. 4 février 2013 Génie Logiciel 4 février 2013 Plan I. Généralités II. Structures linéaires III. Exceptions IV. Structures arborescentes V. Dictionnaires I. Principes II. Notions propres à la POO I. Principes Chapitre

Plus en détail

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

Introduction au Système de Gestion de Base de Données et aux Base de Données Introduction au Système de Gestion de Base de Données et aux Base de Données Formation «Gestion des données scientifiques : stockage et consultation en utilisant des bases de données» 24 au 27 /06/08 Dernière

Plus en détail

Partie I du TD 1 au TD 5. Bases de données et MySQL -

Partie I du TD 1 au TD 5. Bases de données et MySQL - Système d information http://www.agroparistech.fr/systeme-d-information.html Partie I du TD 1 au TD 5 - Bases de données et MySQL - Liliana Ibănescu liliana.ibanescu@agroparistech.fr UFR d informatique

Plus en détail

Administration des bases de données. Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/

Administration des bases de données. Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ Administration des bases de données Jean-Yves Antoine http://www.info.univ-tours.fr/~antoine/ Administration des bases de données II Objets avancés dans les bases de données OBJECTIFS 2.1. NOTIONS 2.1.1.

Plus en détail

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

Intégrité sémantique dans les bases de données relationnelles Intégrité sémantique dans les bases de données relationnelles 1 - Intégrité sémantique Bernard ESPINASSE Professeur à Aix-Marseille Université (AMU Ecole Polytechnique Universitaire de Marseille Fev. 2013

Plus en détail

Optimisation SQL. Quelques règles de bases

Optimisation SQL. Quelques règles de bases Optimisation SQL Quelques règles de bases Optimisation des ordres SQL Page 2 1. QUELQUES RÈGLES DE BASE POUR DES ORDRES SQL OPTIMISÉS...3 1.1 INTRODUCTION...3 1.2 L OPTIMISEUR ORACLE...3 1.3 OPTIMISEUR

Plus en détail

Bases de Données Avancées

Bases de Données Avancées 1/187 Bases de Données Avancées UML et SQL 2/3 Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR Léonard de Vinci 74, rue Marcel

Plus en détail

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

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours 12 : Concurrence d accès Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Accès concurrents Définitions Verrous Collisions Niveaux de cohérence Blocage

Plus en détail

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

Chapitre 5 : Les procédures stockées PL/SQL I. Introduction Une procédure ou une fonction stockée est un bloc PL/SQL nommé pouvant accepter des paramètres et être appelée. Généralement, on utilise une fonction pour calculer une valeur. Les procédures

Plus en détail

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

Plus en détail

Gestion des utilisateurs et de leurs droits

Gestion des utilisateurs et de leurs droits Gestion des utilisateurs et de leurs droits Chap. 12, page 323 à 360 Lors de la création d'un utilisateur vous devez indiquer son nom, ses attributs, son profil, la méthode d'authentification (par le SE

Plus en détail

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

PHP 5. La base de données MySql. A. Belaïd 1 PHP 5 La base de données MySql A. Belaïd 1 Base de données C est quoi une base de données? Une base de données contient une ou plusieurs tables, chaque table ayant un ou plusieurs enregistrements Exemple

Plus en détail

Feuille de TD 2 de BDA, M1 2008 2009 11-03-2011. SGBDRO avec Oracle. 1 Première version simpliste

Feuille de TD 2 de BDA, M1 2008 2009 11-03-2011. SGBDRO avec Oracle. 1 Première version simpliste Feuille de TD 2 de BDA, M1 2008 2009 11-03-2011 Les fichiers en format pdf des projections du cours sont disponibles sur la page : http://www.ibisc.univevry.fr/~serena mais ne pas les imprimer au bât.

Plus en détail

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

Le langage SQL (première partie) c Olivier Caron Le langage SQL (première partie) 1 Plan Le S.G.B.D. postgres Le langage SQL Langage de manipulation de données Langage de requêtes 2 Quelques mots sur Postgres (1/2) Travaux de Stonebraker (Univ. Berkeley)

Plus en détail

1 Création et manipulation d une base de données

1 Création et manipulation d une base de données Université Paris 13 TP Base de données Année 2013-2014 Institut Galilée SQL et ORACLE LI3 1 Création et manipulation d une base de données ans ce TP, nous allons créer la base de données de l exercice

Plus en détail

LES TYPES DE DONNÉES DU LANGAGE PASCAL

LES TYPES DE DONNÉES DU LANGAGE PASCAL LES TYPES DE DONNÉES DU LANGAGE PASCAL 75 LES TYPES DE DONNÉES DU LANGAGE PASCAL CHAPITRE 4 OBJECTIFS PRÉSENTER LES NOTIONS D ÉTIQUETTE, DE CONS- TANTE ET DE IABLE DANS LE CONTEXTE DU LAN- GAGE PASCAL.

Plus en détail

Programmation en VBA

Programmation en VBA Programmation en VBA Présentation de Visual Basic Visual Basic : Basic : dérivé du langage Basic (Biginner s All purpose Symbolic Instruction Code) des années 60 Visual : dessin et aperçu de l interface

Plus en détail

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013 NFA 008 Introduction à NoSQL et MongoDB 25/05/2013 1 NoSQL, c'est à dire? Les bases de données NoSQL restent des bases de données mais on met l'accent sur L'aspect NON-relationnel L'architecture distribuée

Plus en détail

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

Configurer la supervision pour une base MS SQL Server Viadéis Services Configurer la supervision pour une base MS SQL Server Référence : 11588 Version N : 2.2 : Créé par : Téléphone : 0811 656 002 Sommaire 1. Création utilisateur MS SQL Server... 3 2. Configuration de l accès

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Bases de Données Réparties

Bases de Données Réparties Bases de Données Réparties Architecture Mise en œuvre Duplication et Réplication Michel Tuffery BDR : Définition Ensemble de bases de données gérées par des sites différents et apparaissant à l utilisateur

Plus en détail

Apprendre le langage SQL - Le DML - 1 / 41 - Apprendre le langage SQL par l exemple Partie 2 : le DML

Apprendre le langage SQL - Le DML - 1 / 41 - Apprendre le langage SQL par l exemple Partie 2 : le DML Apprendre le langage SQL - Le DML - 1 / 41 - Apprendre le langage SQL par l exemple Partie 2 : le DML Ce document est publié sous licence Creative Commons CC-by-nc-nd. Il ne peut ni être modifié, ni faire

Plus en détail

Quelques aspects du Relationnel-Objet du SGBD Oracle

Quelques aspects du Relationnel-Objet du SGBD Oracle Département informatique de l IUT (de l université) de Bordeaux Cours de Bases de Données : présentation partielle d un SGBD RO 12 août 2015 Olivier Guibert Quelques aspects du Relationnel-Objet du SGBD

Plus en détail

Cours Web n o 7 MySQL et PHP

Cours Web n o 7 MySQL et PHP Introduction aux bases de données Cours Web n o 7 MySQL et PHP Sandrine-Dominique Gouraud (gouraud@lri.fr) Pierre Senellart (pierre@senellart.com) Semaine du 7 novembre 2005 S.-D. Gouraud, P. Senellart

Plus en détail

Programmation Visual Basic sous Excel

Programmation Visual Basic sous Excel 1 Programmation Visual Basic sous Excel Version provisoire Septembre 06 1 Introduction Excel était avant tout un tableur. Au fil des versions, il a su évoluer et intégrer des fonctionnalités qui le rendent

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

Présentation du module Base de données spatio-temporelles

Présentation du module Base de données spatio-temporelles Présentation du module Base de données spatio-temporelles S. Lèbre slebre@unistra.fr Université de Strasbourg, département d informatique. Partie 1 : Notion de bases de données (12,5h ) Enjeux et principes

Plus en détail

Si le médecin agit en situation d urgence, insérer une trace de ses requêtes. Si le patient est cardiaque, le préciser dans le motif de la visite

Si le médecin agit en situation d urgence, insérer une trace de ses requêtes. Si le patient est cardiaque, le préciser dans le motif de la visite Précompilateur Compilateur LP PROGRAMMATION SQL Limites de SQL Problématique de la connexion langage hôte/sql 3 approches Embedded SQL (PRO*C, SQLJ ) API de bas niveau (SQL-CLI, ODBC, ) Langage dédié (PL/SQL,

Plus en détail

Bases de Données Avancées

Bases de Données Avancées 1/62 Bases de Données Avancées Introduction & Rappel Conception et Modélisation Thierry Hamon Bureau H202 - Institut Galilée Tél. : 33 1.48.38.35.53 Bureau 150 LIM&BIO EA 3969 Université Paris 13 - UFR

Plus en détail

Bases de données. Chapitre 1. 1.1 Généralité sur les bases de données. 1.2 Avec sqlite3. 1.1.1 Le langage SQL et les bases de données

Bases de données. Chapitre 1. 1.1 Généralité sur les bases de données. 1.2 Avec sqlite3. 1.1.1 Le langage SQL et les bases de données Chapitre 1 Bases de données 1.1 Généralité sur les bases de données 1.1.1 Le langage SQL et les bases de données La base de données (BDD) est un système qui enregistre des informations. Ces informations

Plus en détail

Norme de programmation pour le cours et les travaux pratiques

Norme de programmation pour le cours et les travaux pratiques Université du Québec École de technologie supérieure Service des enseignements généraux www.seg.etsmtl.ca INF130 Ordinateurs et programmation Norme de programmation pour le cours et les travaux pratiques

Plus en détail

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO2 2006-2007 S2-IO2 Bases de données: Jointures, Transactions

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO2 2006-2007 S2-IO2 Bases de données: Jointures, Transactions Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO2 2006-2007 S2-IO2 Bases de données: Jointures, Cours Internet et Outils: [1/12] Intro, Internet, Web, XHTML (2H) [2/12] XHTML(2H) [3/12]

Plus en détail

Module N 12 : Programmation des Procédures Stockées et des Triggers. Sommaire

Module N 12 : Programmation des Procédures Stockées et des Triggers. Sommaire Sommaire NOTIONS EN TRANSACT SQL... 2 La déclaration d'une variable... 2 L'affectation d'une valeur à une variable... 3 L'affichage d'informations... 3 L'arrêt d'un programme... 3 L'utilisation des structures

Plus en détail

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

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail