master
Pascal LAFOURCADE 4 years ago
parent 69f15ce69b
commit e6fc3d733d

@ -73,6 +73,7 @@
\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 lexé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 naffiche des informations « polluant » le
résultat :
\begin{itemize}
\item \code{set echo off} évite que le système naffiche la commande
du bloc PL/SQL au moment où il lexécute,
du bloc \plsql{} au moment où il lexécute,
\item \code{set verify off} évite que le système naffiche lopération
de substitution au moment où il la fait,
\item \code{set feed off} évite que le système naffiche le nombre de
@ -496,7 +497,7 @@ résultat :
\faWarning{} \plsql{} ne comprend pas dinstruction de saisie ou daffichage.
\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
%% lenvironnement 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 lexception \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 na pas de produit} ou \code{le fournisseur a plusieurs
produits}, ou le N° du produit sil nen a quun.
@ -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

Loading…
Cancel
Save