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} \section{Exécution du code PL/SQL}
En SQL, les commandes sont transmises les unes après les autres et 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 traitées séparément par le moteur SQL, comme le montre la
Figure~\ref{fig:plsql1}. Figure~\ref{fig:plsql1}.
\begin{figure}[htb] \begin{figure}[htb]
\begin{center} \begin{center}
\begin{tikzpicture} \begin{tikzpicture}
\node[draw] (a) at (0,1) {\begin{minipage}[h][2cm][t]{5cm} \node[draw] (a) at (0,1) {\begin{minipage}[h][2cm][t]{5cm}
Fichier de commandes SQL\\ 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,1) -- (7.75,1) node[midway,above] {\code{UPDATE} ...};
\draw[thick,-latex] (2.75,.25) -- (7.75,.25) 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) { \node[draw] (b) at (10,1) {
\begin{minipage}[h][2cm][t]{4cm} \begin{minipage}[h][2cm][t]{4cm}
\ \\ \ \\
@ -380,14 +377,12 @@ Fichier de commandes SQL\\
\caption{}\label{fig:plsql1} \caption{}\label{fig:plsql1}
\end{figure} \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 sont transmis globalement au moteur SQL, comme le montre la
Figure~\ref{fig:plsql2}. Figure~\ref{fig:plsql2}.
\begin{figure}[htb] \begin{figure}[htb]
\begin{center} \begin{center}
\begin{tikzpicture} \begin{tikzpicture}
\node[draw] (a) at (0,1) {\begin{minipage}[h][3.25cm][t]{5cm} \node[draw] (a) at (0,1) {\begin{minipage}[h][3.25cm][t]{5cm}
Bloc PL/SQL\\ Bloc PL/SQL\\
@ -431,7 +426,15 @@ Bloc PL/SQL\\
Le fichier de commandes ci-dessous permet la saisie de la référence 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 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} \begin{verbatim}
set echo off set echo off
@ -468,18 +471,18 @@ set feed on
set echo on set echo on
\end{verbatim} \end{verbatim}
\begin{remarque} \faWarning{} Apr\`es la fin du bloc il faut imp\'erativement mettre :
Ce fichier comporte trois parties :
\begin{itemize} \begin{itemize}
\item des commandes SQL+ pour la saisie de la référence produit, \item \code{.} : ce point indique la fin du mode PL/SQL,
\item un bloc \plsql{} pour accéder à la base, \item \code{/} (seul sur une ligne) : cela déclenche lexécution du
\item des commandes SQL+ pour afficher le résultat. bloc PL/SQL ou de l ordre SQL stocké dans le buffer.
\end{itemize} \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 : résultat :
\begin{itemize} \begin{itemize}
\item \code{set echo off} évite que le système naffiche la commande \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, de substitution au moment où il la fait,
\item \code{set feed off} évite que le système naffiche le nombre de \item \code{set feed off} évite que le système naffiche le nombre de
lignes sélectionnées, 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} \end{itemize}
\faWarning{} \plsql{} ne comprend pas dinstruction de saisie ou daffichage.
\begin{exercice} \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 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 \code{vage}, d'ajouter un \`a cette valeur et d'afficher ``Votre age
contenu de la variable \code{vage}. 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} \end{exercice}
\cache{ \cache{
@ -510,7 +512,7 @@ ACCEPT vage
begin begin
:vage:=\&vage; :vage:= 1 + \&vage;
end; end;
@ -537,10 +539,11 @@ sections.
par un \code{;} par un \code{;}
\item Possibilité de placer des commentaires : \code{/* commentaire \item Possibilité de placer des commentaires : \code{/* commentaire
sur plusieurs lignes commençant par au moins un espace */} 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} \end{itemize}
Attention aux points virgules: en cas doubli, Oracle affiche un N° de \faWarning{} Attention aux points virgules: en cas doubli, Oracle affiche un
ligne attendant la suite de commande SQL. num\'ero de ligne attendant la suite de commande SQL.
\begin{figure}[htb] \begin{figure}[htb]
\begin{center} \begin{center}
@ -889,7 +892,7 @@ END;
\begin{exemple} Récupération du message derreur retourné par Oracle en cas \begin{exemple} Récupération du message derreur retourné par Oracle en cas
dexception. 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 utilisés directement dans une instruction SQL. Il faut les récupérer
dans une variable. dans une variable.
\begin{verbatim} \begin{verbatim}
@ -988,7 +991,7 @@ UPDATE trayon SET nom_rayon = dnom_rayon WHERE CURRENT OF r;
COMMIT; COMMIT;
\end{verbatim} \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. entre deux exécutions qui voudraient écrire dans la même table.
\begin{exercice} \begin{exercice}

Loading…
Cancel
Save