You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

211 lines
5.3 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

\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 dune 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 lENT
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 dun numéro de véhicule saisi au clavier, afficher limmatriculation et le modèle correspondant ainsi que le nom du client si cest un véhicule en cours de location.
{\bf Cas derreur :} « 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 derreur :}
\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 dun retour de location]
Il est demander d'enregistrer le retour dun véhicule. Donner la
procédure PL/SQL permettant lenregistrement 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 nest 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 <user>/<password>@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}