\documentclass[a4paper,11pt]{article} \usepackage[utf8x]{inputenc} \usepackage[T1]{fontenc} \usepackage[french]{babel} \usepackage[a4paper,hmargin=20mm,vmargin=30mm]{geometry}%\usepackage{fullpage} \usepackage{url} \usepackage{comment} \usepackage{fancyhdr}% fancy header \usepackage{fancyvrb} \fancypagestyle{monstyle}{ %\fancyhead{} \renewcommand{\headrulewidth}{1pt} %% %\renewcommand{\footrulewidth}{0.4pt} % \fancyhead[LE]{\slshape \thepage/ \pageref{LastPage}} %% \fancyhead[RO]{\slshape \thepage/ \pageref{LastPage}} %\fancyhf{} %\fancyhead[LE]{\slshape LE} %\fancyhead[CE]{\slshape CE} %\fancyhead[RE]{\slshape RE} \fancyhead[LO]{\bfseries 2020-2021 BD PLS/SQL\rightmark} %\fancyhead[CO]{\slshape APF} \fancyhead[RO]{\bfseries ~\leftmark } %% %\fancyfoot{} % \fancyfoot[LE,RO]{} \fancyfoot[CO,CE]{}%\slshape\thepage/\pageref{LastPage}} %% %\fancyfoot[LO,RE]{\small\slshape \ddmmyyyydate version du \today} } % \pagestyle{fancy} \usepackage{amsmath} \usepackage{amsthm} \theoremstyle{definition} \newtheorem{exercice}{Exercice} \pagestyle{monstyle} \usepackage{amsmath} \usepackage{amsthm} \newcommand{\code}[1]{\texttt{#1}} \begin{document} \begin{center} TP1 : Location de v\'ehicules \end{center} Contexte : L'objectif est de gérer les locations d’une agence de locations de véhicules. Les tables utilisées sont les suivantes : \begin{description} \item[Tclient2021]: \begin{itemize} \item Numéro client \item Nom \item Ville \item Code postal \end{itemize} \item[Tcategorie2021]: \begin{itemize} \item Numéro categorie \item Libellé \end{itemize} \item[Tremplacement2021]: \begin{itemize} \item Numéro catégorie \item Numéro catégorie équivalente \end{itemize} \item[Tvehicule2021]: \begin{itemize} \item Numéro véhicule \item Immatriculation \item Modèle \item Couleur \item Dernier kilométrage \end{itemize} \item[Tlocation2021]: \begin{itemize} \item Numéro client \item Numéro véhicule \item Date début location \item Date retour prévue \item Kilométrage départ \end{itemize} \item[Tlocatretour2021]: \begin{itemize} \item Numéro client \item Numéro véhicule \item Date début location \item Date retour prévue \item Kilométrage départ \item Date retour effectif \item Kilométrage fin \end{itemize} \end{description} Vous trouverez sur le site suivant \url{https://sancy.iut-clermont.uca.fr/~lafourcade/BDP3/} et sur l’ENT le script de création et de remplissage des tables (des occurrences pourront être ajoutées si nécessaire) \code{locationvehic2021.sql} Vos procédures SQL devront avoir la structure suivante : \begin{SaveVerbatim}{VerbEnv} drop table tligne ; create table Tligne (ligne varchar2(200)) ; Déclaration des variables hôtes Saisie des paramètres Bloc PL/SQL Select * from Tligne ; \end{SaveVerbatim} {\centering \fbox{\BUseVerbatim{VerbEnv}}\par} \begin{exercice}[Sans utiliser la clause exception] A partir d’un numéro de véhicule saisi au clavier, afficher l’immatriculation et le modèle correspondant ainsi que le nom du client si c’est un véhicule en cours de location. {\bf Cas d’erreur :} « n° de véhicule inconnu ». \end{exercice} \begin{exercice}[Avec la clause exception] Afficher le numéro du véhicule loué par un client dont le numéro sera saisi. {\bf Cas d’erreur :} \begin{itemize} \item « aucune location pour ce client » \item « plusieurs locations en cours pour ce client » (cf un prochain TP pour traiter ce problème) \end{itemize} \end{exercice} \begin{exercice}[Mise à jour : enregistrement d’un retour de location] Il est demander d'enregistrer le retour d’un véhicule. Donner la procédure PL/SQL permettant l’enregistrement du retour, pour une date de retour donnée et pour un véhicule dont le numéro sera saisi ainsi que le kilométrage de fin de location. Informations à saisir par l'utilisateur sont : numéro du véhicule, date de retour, kilométrage de fin. Les messages suivants sont à prévoir : \begin{itemize} \item numéro véhicule inconnu, \item ce véhicule n’est pas en cours de location, \item la date de retour doit être postérieure à la date de début de location, \item le kilométrage de fin doit être supérieur au kilométrage de début, \item le retour a bien été enregistré et le kilométrage du véhicule a été mis à jour. \end{itemize} \end{exercice} \paragraph{Premi\`ere s\'eance :} Connexion : \verb+sqlplus /@KIROV+ Lors de votre première connexion modifier votre mot de passe avec la commande : \verb+PASSWORD;+ Ce qui est équivalent à : \verb+ALTER USER dupond IDENTIFIED BY password;+ Si le mot de passe est \'egar\'e quelque part, il faut se connecter en \code{ssh} sur \code{londres} et faire \code{oracle\_passwd} Pour lancer un fichier \verb+.sql+ en sqlplus, il suffit de taper : \verb+@toto.sql;+ Pour quitter sqlplus, il suffit de taper : \verb+quit;+ Lancer \verb+sqlplus+ avec cette commande \verb+rlwrap sqlplus+ vous permet d'avoir l'historique. \paragraph{Corbeille :} Vider les tables \verb+BIN$$xxxx+ : avec la commande \verb+PURGE RECYCLEBIN;+ \paragraph{En cas de blocage :} Dans un terminal executer la commande suivante pour voir les \code{pid} des processus zombies : \verb+ps -aux | grep sqlplus+ Ensuite tuer ces zombies gr\^ace \`a la commande \code{kill -9 numerodepid} \end{document}