\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 2018-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}
