|
|
\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{times}
|
|
|
|
|
|
\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}}
|
|
|
\newcommand{\proc}{Pro$^{*}$C}
|
|
|
|
|
|
\begin{document}
|
|
|
|
|
|
|
|
|
\begin{center}
|
|
|
TP 4
|
|
|
\end{center}
|
|
|
|
|
|
\paragraph{Objectifs du TP :} mettre en œuvre le langage \proc{} pour gérer la connexion et la déconnexion à une base de données, créer une table, insérer des valeurs et lire des valeurs dans une table
|
|
|
|
|
|
|
|
|
\paragraph{Attention :} Vous allez travailler sous Unix afin d’accéder
|
|
|
aux commandes permettant de compiler vos programmes \proc{}. Si
|
|
|
nécessaire, vous avez accès à SQLplus en utilisant la commande : \code{sqlplus login@kirov}
|
|
|
|
|
|
Assurez-vous lorsque vous êtes sous SQLplus que vous validez bien vos
|
|
|
requêtes si vous souhaitez ne pas avoir de problèmes en \proc{} (en
|
|
|
utilisant \code{COMMIT WORK}).
|
|
|
|
|
|
|
|
|
\paragraph{Programmation en \proc{} :} Réalisez vos programmes \proc{}
|
|
|
en utilisant votre éditeur de texte préféré, et veillez à enregistrer
|
|
|
les fichiers avec l’extension \code{.pc}. Pour précompiler, compiler
|
|
|
et linker votre programme, il faut utiliser la commande suivante :
|
|
|
|
|
|
\noindent \code{make -f /etc/oracle/proc.mk build EXE=FichierSansExtension OBJS=Fichier.o}
|
|
|
|
|
|
Cette commande va vous générer le fichier \code{.c}, le fichier \code{.o} et
|
|
|
l’exécutable. Tous les fichiers auront le même nom. Choisissez-le donc
|
|
|
bien pour vous assurer qu’il représente bien ce que fait le programme
|
|
|
concerné.
|
|
|
|
|
|
\paragraph{Compte rendu :} Pour chaque question, donner le code du
|
|
|
programme, l’état de la base (pour les tables concernées) avant et
|
|
|
après exécution du programme si une mise à jour a été effectuée et si
|
|
|
possible une copie de l’écran au cours de l’exécution.
|
|
|
|
|
|
|
|
|
%% \begin{SaveVerbatim}{VerbEnv}
|
|
|
|
|
|
%% Catégorie : numéro libellé
|
|
|
|
|
|
%% Num. véhic. Immat. Couleur Modèle
|
|
|
%% XXXXX XX-9999-XX X...X X...X
|
|
|
%% XXXXX XX-9999-XX X...X X...X
|
|
|
%% XXXXX XX-9999-XX X...X X...X
|
|
|
|
|
|
%% \end{SaveVerbatim}
|
|
|
|
|
|
|
|
|
|
|
|
\begin{exercice}
|
|
|
En reprenant les fonctions connexion et deconnexion vues en cours,
|
|
|
développez un programme \proc{} (\code{Q1.pc}) qui se connecte à la
|
|
|
base de données en demandant votre login et votre mot de passe puis se
|
|
|
déconnecte. Les messages suivants seront affichés en plus de ceux déjà
|
|
|
indiqués dans le cours:
|
|
|
\begin{enumerate}
|
|
|
\item Appel de la fonction connexion.
|
|
|
\item Appel de la fonction deconnexion.
|
|
|
\end{enumerate}
|
|
|
|
|
|
%% \begin{center}
|
|
|
%% \fbox{\BUseVerbatim{VerbEnv}}
|
|
|
%% \end{center}
|
|
|
\end{exercice}
|
|
|
|
|
|
|
|
|
\begin{exercice} \'Ecrire le programme \proc{} (\code{Q2.pc}) qui
|
|
|
reprend le programme écrit en Q1 et le complète pour créer la table
|
|
|
\code{tessai1 (id, num, unCar , chaine, uneDate)} où les colonnes
|
|
|
sont :
|
|
|
\begin{itemize}
|
|
|
\item \code{id} : chaine de 3 caractères,
|
|
|
\item \code{num} : numérique,
|
|
|
\item \code{unCar} : un seul caractère,
|
|
|
\item \code{chaine} : une chaine de caractères de longueur variable
|
|
|
d’au plus 10 car,
|
|
|
\item \code{uneDate} : une date
|
|
|
\end{itemize}
|
|
|
|
|
|
Vous devez intégrer les contraintes suivantes: \code{id} est clé
|
|
|
primaire, \code{num} est une valeur comprise entre 100 et 199
|
|
|
(bornes comprises), \code{unCar} est soit \code{‘A’}, soit
|
|
|
\code{‘B’}, soit \code{‘C’} chaine commence obligatoirement par \code{‘E’}
|
|
|
\code{uneDate} est une date dont l’année est 2021.
|
|
|
|
|
|
Vérifiez sous sqlPlus, que la table est bien créée par \code{describe
|
|
|
tessai1}
|
|
|
\end{exercice}
|
|
|
|
|
|
\begin{exercice}
|
|
|
Ecrire le programme \proc{} (\code{Q3.pc}) qui reprend le programme
|
|
|
écrit dans l'exercice 1 et le complète pour insérer des valeurs dans
|
|
|
la table \code{tessai}.
|
|
|
\begin{itemize}
|
|
|
\item Par exemple, insérer : \code{‘T01’, 100, ‘C’ , ‘Essai’ ,
|
|
|
‘01/03/2021’} Vérifiez sous sqlPlus, que la table contient bien les
|
|
|
informations insérées.
|
|
|
\item Faire de nouvelles insertions en testant les différentes
|
|
|
contraintes. Vérifiez sous sqlPlus, les insertions ou les non
|
|
|
insertions !
|
|
|
\end{itemize}
|
|
|
|
|
|
|
|
|
\end{exercice}
|
|
|
|
|
|
\begin{exercice}
|
|
|
Ecrire le programme \proc{} (\code{Q4.pc}) qui reprend le programme
|
|
|
écrit dans l'exercice 1 et le complète pour lire une ligne de la table
|
|
|
\code{tessai}, par exemple lire la ligne dont \code{id=’T01'} et
|
|
|
affiche les valeurs lues \code{(num, unCar, chaine et uneDate)}.
|
|
|
\end{exercice}
|
|
|
|
|
|
|
|
|
|
|
|
\end{document}
|