master
Pascal LAFOURCADE 4 years ago
parent fc2ce380dd
commit 69f15ce69b

@ -344,14 +344,12 @@ Afin d'interagir avec l'utilisateur, il existe deux types de commandes.
\section{Exécution du code PL/SQL}
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
Figure~\ref{fig:plsql1}.
\begin{figure}[htb]
\begin{center}
\begin{tikzpicture}
\node[draw] (a) at (0,1) {\begin{minipage}[h][2cm][t]{5cm}
Fichier de commandes SQL\\
@ -366,7 +364,6 @@ Fichier de commandes SQL\\
\draw[thick,-latex] (2.75,1) -- (7.75,1) node[midway,above] {\code{UPDATE} ...};
\draw[thick,-latex] (2.75,.25) -- (7.75,.25) node[midway,above] {\code{UPDATE} ...};
\node[draw] (b) at (10,1) {
\begin{minipage}[h][2cm][t]{4cm}
\ \\
@ -380,14 +377,12 @@ Fichier de commandes SQL\\
\caption{}\label{fig:plsql1}
\end{figure}
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}.
\begin{figure}[htb]
\begin{center}
\begin{tikzpicture}
\node[draw] (a) at (0,1) {\begin{minipage}[h][3.25cm][t]{5cm}
Bloc PL/SQL\\
@ -431,7 +426,15 @@ Bloc PL/SQL\\
Le fichier de commandes ci-dessous permet la saisie de la référence
dun produit et laffichage de sa désignation ou dun  message
derreur si le N° de produit nexiste pas.
derreur si le N° de produit nexiste pas. Ce fichier comporte trois
parties :
\begin{itemize}
\item des commandes SQL+ pour la saisie de la référence produit,
\item un bloc \plsql{} encadr\'e dans l'exemple, il permet d'accéder
à la base de donn\'ees,
\item des commandes SQL+ pour afficher le résultat.
\end{itemize}
\begin{verbatim}
set echo off
@ -468,18 +471,18 @@ set feed on
set echo on
\end{verbatim}
\begin{remarque}
Ce fichier comporte trois parties :
\faWarning{} Apr\`es la fin du bloc il faut imp\'erativement mettre :
\begin{itemize}
\item des commandes SQL+ pour la saisie de la référence produit,
\item un bloc \plsql{} pour accéder à la base,
\item des commandes SQL+ pour afficher le résultat.
\item \code{.} : ce point indique la fin du mode PL/SQL,
\item \code{/} (seul sur une ligne) : cela déclenche lexécution du
bloc PL/SQL ou de l ordre SQL stocké dans le buffer.
\end{itemize}
\end{remarque}
\plsql{} ne comprend pas dinstruction de saisie ou daffichage. Les
commandes \code{SET} positionnent des variables denvironnement pour
éviter que le système naffiche des informations « polluant » le
Les commandes \code{SET} positionnent des variables denvironnement
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
@ -488,17 +491,16 @@ résultat :
de substitution au moment où il la fait,
\item \code{set feed off} évite que le système naffiche le nombre de
lignes sélectionnées,
\item \code{.} le point indique la fin du mode PL/SQL,
\item \code{/} (seul sur une ligne) déclenche lexécution du bloc PL/SQL ou de l ordre SQL stocké dans le buffer.
\end{itemize}
\faWarning{} \plsql{} ne comprend pas dinstruction de saisie ou daffichage.
\begin{exercice}
\'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} et d'afficher ``Votre age est 20 ans'' si $20$ est le
contenu de la variable \code{vage}.
\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
et $20$ le contenu de la variable \code{vage}.
\end{exercice}
\cache{
@ -510,7 +512,7 @@ ACCEPT vage
begin
:vage:=\&vage;
:vage:= 1 + \&vage;
end;
@ -537,10 +539,11 @@ sections.
par un \code{;}
\item Possibilité de placer des commentaires : \code{/* commentaire
sur plusieurs lignes commençant par au moins un espace */}
\item Il est conseill\'e d'utiliser \code{-}\code{-} en d\'ebut de ligne pour les commentaires.
\end{itemize}
Attention aux points virgules: en cas doubli, Oracle affiche un N° de
ligne attendant la suite de commande SQL.
\faWarning{} Attention aux points virgules: en cas doubli, Oracle affiche un
num\'ero de ligne attendant la suite de commande SQL.
\begin{figure}[htb]
\begin{center}
@ -889,7 +892,7 @@ END;
\begin{exemple} Récupération du message derreur retourné par Oracle en cas
dexception.
Attention : \code{SQLERRM} et \code{SQLCODE} ne peuvent être
\faWarning{} Attention : \code{SQLERRM} et \code{SQLCODE} ne peuvent être
utilisés directement dans une instruction SQL. Il faut les récupérer
dans une variable.
\begin{verbatim}
@ -988,7 +991,7 @@ UPDATE trayon SET nom_rayon = dnom_rayon WHERE CURRENT OF r;
COMMIT;
\end{verbatim}
Attention, terminer par \code{COMMIT}, sinon risque dinterblocage
\faWarning{} Attention, terminer par \code{COMMIT}, sinon risque dinterblocage
entre deux exécutions qui voudraient écrire dans la même table.
\begin{exercice}

Loading…
Cancel
Save