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