Simplifier... Programmation en PL/SQL

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

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

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

TP Contraintes - Triggers

Bases de données avancées

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

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

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

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

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

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

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

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

Devoir Data WareHouse

Corrigés détaillés des exercices

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

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

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

A QUOI SERVENT LES BASES DE DONNÉES?

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

Introduction au PL/SQL Oracle. Alexandre Meslé

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

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

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

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

Bases de données relationnelles

Gestion de base de données

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

A QUOI SERVENT LES BASES DE DONNÉES?

Bases de Données Avancées PL/SQL

BASES DE DONNEES TP POSTGRESQL

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

Olivier Mondet

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

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

CREATION WEB DYNAMIQUE

Oracle Le langage procédural PL/SQL

SQL Historique

Modélisation et Gestion des bases de données avec mysql workbench

Création et Gestion des tables

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

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

Le Langage De Description De Données(LDD)

1 Position du problème

Intégrité des données

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

Présentation Windows Azure Hadoop Big Data - BI

Examen Médian - 1 heure 30

1. Base de données SQLite

OpenPaaS Le réseau social d'entreprise

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

I4 : Bases de Données

Langage SQL : créer et interroger une base

Utilitaires méconnus de StrataFrame

Compétences Business Objects

UML et les Bases de Données

Auto-évaluation Oracle: cours de base

Historisation des données

ACTIVITÉ DE PROGRAMMATION

Objectifs du TP : Initiation à Access

Les BASES de DONNEES dans WampServer

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

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

<Insert Picture Here>ApExposé. Cédric MYLLE 05 Février Exposé Système et Réseaux : ApEx, Application Express d Oracle

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

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

Mysql avec EasyPhp. 1 er mars 2006

Bases de Données Réparties

Systèmes de Gestion de Bases de Données

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

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

Bases de données. Mihaela Mathieu

Présentation du PL/SQL

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

UNIVERSITE DE CONSTANTINE 1 FACULTE DES SIENCES DE LA TECHNOLOGIE DEPARTEMENT D ELECTRONIQUE 3 ème année LMD ELECTRONIQUE MEDICALE

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

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

Bases de données Outils de gestion

Le langage procédural PL-PGSQL

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

Cours Informatique Master STEP

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

Introduction aux Bases de Données 2004/2005

Dossier I Découverte de Base d Open Office

Pratique et administration des systèmes

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

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Master Exploration Informatique des données DataWareHouse

Gestion de stock pour un magasin

Bases de Données Avancées

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

I. MySQL : Serveur et SGBD

DEVAKI NEXTOBJET PRESENTATION. Devaki Nextobjects est un projet sous license GNU/Public.

Instructions pour mettre à jour un HFFv2 v1.x.yy v2.0.00

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

Schéma relationnel et contraintes d intégrité : le cas ConduiteAuto

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Transcription:

Simplifier... Programmation en PL/SQL Référence PPN MC-INFO-OMGL3 : Intégration des SGBD dans les environnements de programmation Objectifs Procédures stockées Utilisation du langage PL/SQL Mise à jour de la base de données du Tour de France Section IUT - Département Informatique Campus 3 Ifs Auteur P.Monchy maj E.Porcq Références PL/SQL : Le langage PL/SQL Oracle PL/SQL par SheikYerbouti (pl/sql.pdf) 1 EXO0 : Introduction 1.1 PLSQL_Exo0A En mode SQL, créer la table suivante. drop table bidon; create table bidon ( num number(4) primary key, type char(10), valeur number(4,2) ); Cliquer avec le bouton droit sur procédure, puis sélectionner " new procedure ". La nommer puis saisir le code cidessous. Compiler, exécuter et commenter le programme. CREATE OR REPLACE PROCEDURE PLSQL_EXO0A AS dbms_output.put_line('ceci est un' chr(10) 'message'); END PLSQL_EXO0A; 1.2 PLSQL_Exo0B Tester (et commenter) le programme suivant : CREATE OR REPLACE PROCEDURE PLSQL_EXO0B AS vnblignes int := 0; insert into bidon values(3,'ville',35.4); insert into bidon values(4,'daine',30.4); select count(*) into vnblignes from bidon; dbms_output.put_line('nb réponses : ' vnblignes); END PLSQL_EXO0B; 2 EXO1 : Exercices de base 2.1 PLSQL_Exo1A L'objectif sera d'écrire une procédure permettant de générer les 10 premiers nombres. 2.1.1 Diagramme d'activité P. Monchy maj E. Porcq Le langage SQL Exercices PL/SQL Imprimé le 14/03/11 page 1

Entrées/Sorties: PLSQL_Exo1A: :BDD i<--0 i <-- i+1 [i<10] Insertion PLSQL_TAB: [i=10] 2.1.2 Schéma de la table PLSQL_TAB nom_exercice varchar2(11) date_jour date resultat number(2) (PK) 2.1.3 Code PLSQL CREATE OR REPLACE PROCEDURE PLSQL_EXO1A as v_nom_exercice -- à compléter -- à compléter END; 2.1.4 Exécution du code Lancer le programme à partir de sqldevelopper puis vérifier le résultat Lancer une nouvelle fois la procédure. Que se passe t-il? Justifier 2.2 PLSQL_EXO1b Même exercice que précédemment avec une boucle while. Exécuter le programme au pas par pas. 2.3 PLSQL_EXO1c Même exercice que précédemment mais en affichant à l'écran les données insérées P. Monchy maj E. Porcq Le langage SQL Exercices PL/SQL Imprimé le 14/03/11 page 2

Entrées/Sorties: PLSQL_Exo1c: :BDD i<--0 i <-- i+1 [i<10] Insérer PLSQL_TAB: :Ecran Afficher [i=10] 3 EXO2 : Gestion des erreurs 3.1 PLSQL_EXO2A Objectif : Écrire une procédure stockée permettant de générer une table de multiplication. Le choix du multiplicateur, compris entre 1 et 10 sera saisi au clavier. La table de multiplication sera enregistrée dans la table PLSQL_TAB et affichée à l'écran. 3.1.1 Modification du schéma de la table PLSQL_TAB Ajouter les colonnes "multiplicande" et "multiplicateur" multiplicande number(2) multiplicateur number(2) 3.1.2 Diagramme d'activité P. Monchy maj E. Porcq Le langage SQL Exercices PL/SQL Imprimé le 14/03/11 page 3

:Entrées/Sorties PLSQL_Exo2a: :BDD :Clavier [pmultiplicateur] vmultiplicateur <- pmultiplicateur i <-- 0 i <-- i+1 :Écran Insérer Afficher PLSQL_TAB: [nom_exercice, sysdate, i,vmultiplicateur, vmultiplicateur*i] [i=10 ] 3.1.3 Code PLSQL CREATE OR REPLACE PROCEDURE PLSQL_EXO2A(pmultiplicateur varchar2) AS -- à compléter -- à compléter END PLSQL_EXO2A; 3.2 PLSQL_EXO2B Même exercice que précédemment mais en y ajoutant un contrôle d'anomalie sur la valeur saisie au clavier. create or replace PROCEDURE PLSQL_EXO2B(pMultiplicateur varchar2) AS vnomexercice plsql_tab.nom_exercice%type := 'PLSQL_EXO2B'; verreur number(1) :=0; cmessage1 constant varchar2(100) := 'il faut saisir un nombre'; cmessage2 constant varchar2(100) := 'la valeur saisie ne peut être nulle'; cmessage3 constant varchar2(100) := 'la valeur doit être comprise entre 0 et 10'; if pmultiplicateur is null then à compléter else for i in 1.. length(pmultiplicateur) loop if substr(... à compléter... then dbms_output.put_line(pmultiplicateur cmessage1); verreur := 1; à compléter P. Monchy maj E. Porcq Le langage SQL Exercices PL/SQL Imprimé le 14/03/11 page 4

3.3 PLSQL_EXO2C Même exercice que précédemment mais les erreurs seront traitées dans le secteur Exception de la procédure stockée. Le message affiché sera un message d'erreur. instructions clés : Exception Raise... raise_application_error 4 EXO3 : ANNULE 5 EXO4 : les curseurs 5.1 PLSQL_EXO4A Écrire une procédure stockée permettant de compter le nombre de coureur de la table tdf_coureur et d'afficher le résultat à l'écran. Utiliser " count ". 5.2 PLSQL_EXO4B Écrire une procédure stockée permettant d'afficher les noms des coureurs à l'écran puis d'afficher les noms des équipes (pas de lien entre les deux tables). Pour atteindre cet objectif, l'étudiant utilisera les curseurs, technique indispensable pour utiliser une requête select ramenant plusieurs lignes. CREATE OR REPLACE PROCEDURE PLSQL_EXO4B AS -- créer les curseurs curcoureur et curequipe -- déclarer les variables associées aux curseurs vnomcoureur et vnomequipe -- ouvrir les curseurs Loop -- lecture du curseur exit when -- compléter ; dbms_output.put_line(compléter); End loop ; dbms_output.put_line(' '); Loop -- lecture du curseur exit when -- compléter ; dbms_output.put_line(compléter); End loop ; -- fermer les curseurs END PLSQL_EXO4B; P. Monchy maj E. Porcq Le langage SQL Exercices PL/SQL Imprimé le 14/03/11 page 5

5.3 PLSQL_EXO4C Compléter la procédure précédente pour qu'elle affiche tous les champs des tables tdf_coureur et tdf_equipe. 5.4 PLSQL_EXO4D Écrire une procédure qui reçoit une partie du nom d'un coureur et qui affiche la liste des coureurs comportant ce mot dans leur nom. 6 EXO5 : Exercices de synthèse 6.1 PLSQL_EXO5A Écrire une procédure stockée permettant qui reçoit une année en paramètre et qui : compte le nombre de participants cette année là compte le nombre d'équipe participante cette année là insère les informations utiles dans la table plsql_tdf (à créer) Gérer les erreurs suivantes : "pas de tour de France dans la base pour cette année là" "l'année n'est pas comprise entre 1900 et 2007" Structure de la table plsql_tdf : nom_exercice varchar2(20), annee number(4), nb_coureurs number(3), nb_equipes number(2), date_jour date, binome varchar2(10) 6.2 PLSQL_EXO5B Modifier la procédure précédente de la façon suivante : on insère les informations utiles dans la table plsql_tdf du schéma "Eric" si une donnée existe déjà dans la table pour une année donnée, on affiche un message d'erreur P. Monchy maj E. Porcq Le langage SQL Exercices PL/SQL Imprimé le 14/03/11 page 6