master
Pascal LAFOURCADE 4 years ago
parent ae3221c775
commit d820b77ef3

@ -718,7 +718,7 @@ UPDATE table SET col2 = var1 WHERE col1 = var2;
\begin{exercice} \begin{exercice}
Calculer le nombre de fournisseurs dun produit entr\'e par Calculer le nombre de fournisseurs dun produit entr\'e par
l'utilisateur. Le résultat sera écrit dans une table l'utilisateur. Le résultat sera écrit dans une table
\code{Tlignes}. Les tables utilis\'ees sont donn\'ees dans la \code{Tligne}. Les tables utilis\'ees sont donn\'ees dans la
Figure~\ref{fig:bd}. Figure~\ref{fig:bd}.
\end{exercice} \end{exercice}
@ -737,7 +737,7 @@ BEGIN
SELECT COUNT(*) INTO dbfournisseurs FROM WHERE noproduit = \&vnoproduit; SELECT COUNT(*) INTO dbfournisseurs FROM WHERE noproduit = \&vnoproduit;
INSERT INTO Tlignes VALUES('Le nombre de fournisseur du produit' INSERT INTO Tligne VALUES('Le nombre de fournisseur du produit'
||\&vnoproduit||' est '|| dnbfournisseurs); ||\&vnoproduit||' est '|| dnbfournisseurs);
END; END;
@ -745,7 +745,7 @@ END;
. .
/ /
SELECT * FROM Tlignes; SELECT * FROM Tligne;
} }
\subsection{Traitements conditionnels \code{IF ... THEN ... END IF;}} \subsection{Traitements conditionnels \code{IF ... THEN ... END IF;}}
@ -767,7 +767,7 @@ La syntaxe pour \'ecrire une condition est la suivante :
\begin{exercice} \begin{exercice}
Calculer le nombre de fournisseurs dun produit donné. Sil ny a pas Calculer le nombre de fournisseurs dun produit donné. Sil ny a pas
de fournisseur, compter le nombre de produits : il doit être $\geq 1$ de fournisseur, compter le nombre de produits : il doit être $\geq 1$
ou 0. \'Ecrire dans une table de \code{Tlignes} soit le nombre de ou 0. \'Ecrire dans une table de \code{Tligne} soit le nombre de
fournisseurs soit le message \code{le produit nexiste pas}. fournisseurs soit le message \code{le produit nexiste pas}.
\end{exercice} \end{exercice}
@ -795,11 +795,11 @@ IF dnbfournisseurs = 0 THEN
END IF; END IF;
IF dnbproduit = 0 THEN INSERT INTO Tlignes VALUES('Pas de produit'||'\&vnoproduit'); IF dnbproduit = 0 THEN INSERT INTO Tligne VALUES('Pas de produit'||'\&vnoproduit');
ELSE ELSE
INSERT INTO Tlignes VALUES('Le nombre de fournisseur du produit' INSERT INTO Tligne VALUES('Le nombre de fournisseur du produit'
||'\&vnoproduit'||' est '|| dnbfournisseur); ||'\&vnoproduit'||' est '|| dnbfournisseur);
END IF; END IF;
@ -809,7 +809,7 @@ END;
. .
/ /
SELECT * FROM Tlignes; SELECT * FROM Tligne;
} }
\subsection{Traitements répétitifs \code{WHILE ...LOOP ...END LOOP;}} \subsection{Traitements répétitifs \code{WHILE ...LOOP ...END LOOP;}}
@ -829,7 +829,7 @@ La condition est une combinaison d'expressions au moyen d'opérateurs :
\begin{exemple}Calcul de factorielle. \begin{exemple}Calcul de factorielle.
\begin{verbatim} \begin{verbatim}
CREATE TABLE tligne (ligne VARCHAR2(200)); CREATE TABLE Tligne (ligne VARCHAR2(200));
VARIABLE n NUMBER VARIABLE n NUMBER
PROMPT taper n PROMPT taper n
ACCEPT n ACCEPT n
@ -845,12 +845,12 @@ BEGIN
fn := fn * i; fn := fn * i;
END LOOP; END LOOP;
INSERT INTO tligne INSERT INTO Tligne
VALUES ( 'Factorielle de '|| TO_CHAR(n)||, ,TO_CHAR(fn)); VALUES ( 'Factorielle de '|| TO_CHAR(n)||, ,TO_CHAR(fn));
END; END;
/ /
SELECT * FROM tligne; SELECT * FROM Tligne;
DROP TABLE tligne; DROP TABLEl Tligne;
\end{verbatim} \end{verbatim}
\end{exemple} \end{exemple}
@ -868,10 +868,10 @@ Les types d'erreurs sont les suivants :
\begin{exemple} Les résultats à afficher sont placés dans \begin{exemple} Les résultats à afficher sont placés dans
une table \code{tligne}. une table \code{Tligne}.
\begin{verbatim} \begin{verbatim}
create table tligne ( ligne varchar2(150)); create table Tligne (Tligne varchar2(150));
variable vnoproduit char(4) variable vnoproduit char(4)
prompt taper la référence du produit à rechercher : prompt taper la référence du produit à rechercher :
accept vnoproduit accept vnoproduit
@ -887,16 +887,16 @@ dnoproduit := &vnoproduit ;
dmessage := 'Référence inconnue '; dmessage := 'Référence inconnue ';
select designation into ddesignation From tproduit where noproduit = dnoproduit ; select designation into ddesignation From tproduit where noproduit = dnoproduit ;
insert into tligne values ('Désignation: ' || ddesignation); insert into Tligne values ('Désignation: ' || ddesignation);
exception exception
when no_data_found then when no_data_found then
insert into tligne values ( dmessage); insert into Tligne values ( dmessage);
end ; end ;
. .
/ /
select * from tligne; select * from Tligne;
drop table tligne; drop table Tligne;
\end{verbatim} \end{verbatim}
\end{exemple} \end{exemple}
@ -970,14 +970,14 @@ doit être la dernière erreur \\ && de la section \code{exception}.\\
\begin{exemple}[Détection de doublons sur une clé primaire.] \begin{exemple}[Détection de doublons sur une clé primaire.]
La séquence suivante crée une ligne dans la table \code{tproduit (noproduit char(4) primary key, ...)} et stocke les erreurs dans une table \code{tligne (ligne varchar2(150));} La séquence suivante crée une ligne dans la table \code{tproduit (noproduit char(4) primary key, ...)} et stocke les erreurs dans une table \code{Tligne (ligne varchar2(150));}
\begin{verbatim} \begin{verbatim}
BEGIN BEGIN
INSERT INTO tproduit VALUES (dnoproduit, ddesignation ...); INSERT INTO tproduit VALUES (dnoproduit, ddesignation ...);
EXCEPTION EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN WHEN DUP_VAL_ON_INDEX THEN
INSERT INTO tligne VALUES (dnoproduit || 'déjà inséré'); INSERT INTO Tligne VALUES (dnoproduit || 'déjà inséré');
END; END;
\end{verbatim} \end{verbatim}
\end{exemple} \end{exemple}
@ -1001,8 +1001,8 @@ END;
EXCEPTION EXCEPTION
WHEN OTHERS THEN WHEN OTHERS THEN
dmess2 := SQLERRM; dmess2 := SQLERRM;
INSERT INTO tligne VALUES (dmess1); INSERT INTO Tligne VALUES (dmess1);
INSERT INTO tligne VALUES (dmess2); INSERT INTO Tligne VALUES (dmess2);
COMMIT; COMMIT;
END; END;
\end{verbatim} \end{verbatim}

Loading…
Cancel
Save