diff --git a/COURS/PLSQL.tex b/COURS/PLSQL.tex index 8763946..d7f191c 100644 --- a/COURS/PLSQL.tex +++ b/COURS/PLSQL.tex @@ -73,7 +73,8 @@ \newcommand{\plsql}{PL/SQL} - +\newcommand{\sql}{SQL} + % \fancyhead[LE]{\slshape \thepage/ \pageref{LastPage}} %% \fancyhead[RO]{\slshape \thepage/ \pageref{LastPage}} @@ -273,28 +274,28 @@ Groupe : \\ \LARGE {\bf \plsql{}} \end{center} -PL/SQL (Procedural Language / Structured Query Language) est un +\plsql{} (Procedural Language / Structured Query Language) est un langage fondé sur les paradigmes de programmation procédurale et structurée. C'est un langage propriétaire, créé par Oracle et utilisé dans le cadre de bases de données relationnelles. Il permet de -combiner des requêtes SQL et des instructions procédurales (boucles, +combiner des requêtes \sql{} et des instructions procédurales (boucles, conditions...), dans le but de créer des traitements complexes destinés à être stockés sur le serveur de base de données (objets serveur), comme des procédures stockées ou des déclencheurs. -\section{Fichier de commandes SQL/PLUS} +\section{Fichier de commandes SQL} -SQL/Plus est un utilitaire en ligne de commande d'Oracle qui permet -aux utilisateurs d'exécuter interactivement des commandes SQL et -PL/SQL. Il est ainsi possible de paramètrer les fichiers de commandes -SQL pour avoir plus d'interaction avec l'utilisateur. +\sql{} est un utilitaire en ligne de commande d'Oracle qui permet +aux utilisateurs d'exécuter interactivement des commandes \sql{} et +\plsql{}. Il est ainsi possible de paramètrer les fichiers de commandes +\sql{} pour avoir plus d'interaction avec l'utilisateur. \paragraph{Variables.} Il possible de stocker des donn\'ees dans des variables. La commande \code{variable vnoproduit CHAR(6)} d\'eclare une variable appell\'ee \code{vnoproduit} de type cha\^ine de caract\`eres de longueur $6$. Afin de se souvenir qu'une variable est d\'eclar\'ee par le mot -cl\'e \code{variable} \`a l'ext\'erieur d'un bloc PL/SQL, il est +cl\'e \code{variable} \`a l'ext\'erieur d'un bloc \plsql{}, il est conseill\'e de pr\'efixer les noms de ces variables par la lettre \code{v}. Cette commande déclare une «bind variable» utilisable dans une commande SQL. Les diff\'erents formats autorisés sont : @@ -342,7 +343,7 @@ Afin d'interagir avec l'utilisateur, il existe deux types de commandes. -\section{Exécution du code PL/SQL} +\section{Exécution du code \plsql{}} En SQL, les commandes sont transmises les unes après les autres et traitées séparément par le moteur SQL, comme le montre la @@ -377,7 +378,7 @@ Fichier de commandes SQL\\ \caption{}\label{fig:plsql1} \end{figure} -En extension procédurale de SQL (\plsql{}), les blocs de commandes +En extension procédurale de \sql{} (\plsql{}), les blocs de commandes sont transmis globalement au moteur SQL, comme le montre la Figure~\ref{fig:plsql2}. @@ -385,7 +386,7 @@ Figure~\ref{fig:plsql2}. \begin{center} \begin{tikzpicture} \node[draw] (a) at (0,1) {\begin{minipage}[h][3.25cm][t]{5cm} -Bloc PL/SQL\\ +Bloc \plsql{}\\ \code{BEGIN} \\ ~~~~~~\code{SELECT} ...\\ ~\quad \code{IF} ... \code{THEN}\\ @@ -418,7 +419,7 @@ Bloc PL/SQL\\ \end{tikzpicture} % \includegraphics[width=12cm]{plsql1.png} \end{center} -\caption{Interaction entre PL/SQL et SQL.}\label{fig:plsql2} +\caption{Interaction entre \plsql{} et SQL.}\label{fig:plsql2} \end{figure} @@ -474,9 +475,9 @@ set echo on \faWarning{} Apr\`es la fin du bloc il faut imp\'erativement mettre : \begin{itemize} -\item \code{.} : ce point indique la fin du mode PL/SQL, +\item \code{.} : ce point indique la fin du mode \plsql{}, \item \code{/} (seul sur une ligne) : cela déclenche l’exécution du - bloc PL/SQL ou de l’ ordre SQL stocké dans le buffer. + bloc \plsql{} ou de l’ ordre \sql{} stocké dans le buffer. \end{itemize} @@ -486,7 +487,7 @@ pour éviter que le système n’affiche des informations « polluant » le résultat : \begin{itemize} \item \code{set echo off} évite que le système n’affiche la commande - du bloc PL/SQL au moment où il l’exécute, + du bloc \plsql{} au moment où il l’exécute, \item \code{set verify off} évite que le système n’affiche l’opération de substitution au moment où il la fait, \item \code{set feed off} évite que le système n’affiche le nombre de @@ -496,7 +497,7 @@ résultat : \faWarning{} \plsql{} ne comprend pas d’instruction de saisie ou d’affichage. \begin{exercice} - \'Ecrire un fichier SQL qui permet d'afficher le message ``Entrer + \'Ecrire un fichier \sql{} qui permet d'afficher le message ``Entrer votre age :'', de saisir l'\^age de l'utilisateur dans la variable \code{vage}, d'ajouter un \`a cette valeur et d'afficher ``Votre age plus un est 20 ans'' si $19$ est la valeur saisie par l'utilisateur @@ -567,7 +568,7 @@ num\'ero de ligne attendant la suite de commande SQL. \begin{minipage}[h][3cm][t]{10cm} \code{BEGIN} \\ \ \\ -Instructions PL/SQL et SQL \\ +Instructions \plsql{} et \sql{} \\ Possibilit\'es de blocs imbriqu\'es\\ \ \\ (obligatoire) @@ -595,13 +596,15 @@ Traitements des erreurs, des cas particuliers\\ \section{Types de variables utilisés en \plsql{}} +En \plsql{} les diff\'erents types possibles sont : \code{CHAR, NUMBER, DATE, + VARCHAR2}. + + Variables locales déclarées dans \code{DECLARE} et il est important de mettre le type adapt\'e en suivant la syntaxe suivante : \verb+nom_variable type := valeur;+ -Les diff\'erents types possibles sont : \code{CHAR, NUMBER, DATE, - VARCHAR2}. Il est n\'ecessaire de choisir le type \`a l'initialisation lors de la déclaration et aussi sa valeur intiale comme le montre les deux @@ -625,7 +628,7 @@ Il est possible de cr\'eer des tableaux en \plsql{}. % %% \item variables définies en langage hôte dans PRO*. Les variables de %% l’environnement sont toujours préfixées. %\item - Les variables définies dans SQL*Plus par \code{VARIABLE} ou + Les variables définies dans \sql{} par \code{VARIABLE} ou \code{ACCEPT} sont préfixées de : pour affectation, de "\verb+&+" pour substitution. @@ -643,7 +646,7 @@ from tproduit where noproduit = dnoproduit; \end{verbatim} -Tableaux PL/SQL. +Tableaux \plsql{}. Déclaration : @@ -807,7 +810,7 @@ drop table tligne; \end{verbatim} \end{exemple} -\begin{remarque} Le message d'erreur est initialisé juste avant la requête SQL qui risque de provoquer l'erreur; la méthode est à utiliser quand plusieurs requêtes SQL sont susceptibles de déclencher la même exception. +\begin{remarque} Le message d'erreur est initialisé juste avant la requête \sql{} qui risque de provoquer l'erreur; la méthode est à utiliser quand plusieurs requêtes \sql{} sont susceptibles de déclencher la même exception. \end{remarque} \begin{exercice} @@ -918,7 +921,7 @@ END; \begin{exercice} Mise en évidence des exceptions \verb+TOO_MANY_ROWS, OTHERS+ Pour mettre en évidence l’exception \verb+TOO_MANY_ROWS+, créez un -fichier de commandes SQL qui: demande un numéro de fournisseur, accède +fichier de commandes \sql{} qui: demande un numéro de fournisseur, accède aux N° des produits de ce fournisseur (par \code{select into}) retourne le message ‘\code{le fournisseur n’a pas de produit}’ ou ‘\code{le fournisseur a plusieurs produits}’, ou le N° du produit s’il n’en a qu’un. @@ -1075,7 +1078,7 @@ permet d'avoir l'historique. Lors de la première connexion modifier le mot de passe avec la -commande SQL : \verb+PASSWORD;+ +commande \sql{} : \verb+PASSWORD;+ Ce qui est équivalent à : \verb+ALTER USER dupond IDENTIFIED BY password;+ @@ -1092,7 +1095,7 @@ Pour quitter sqlplus, il suffit de taper : \verb+quit;+ \paragraph{Mise en forme : } -Sous SQL/PLUS : +Sous \sql{} : \begin{verbatim} Set linesize 150 -- positionne la taille d'une ligne Set pagesize 300 -- positionne le nombre de lignes avant de réafficher les entêtes