master
Pascal LAFOURCADE 4 years ago
parent ae3221c775
commit d820b77ef3

@ -718,7 +718,7 @@ UPDATE table SET col2 = var1 WHERE col1 = var2;
\begin{exercice}
Calculer le nombre de fournisseurs dun produit entr\'e par
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}.
\end{exercice}
@ -737,7 +737,7 @@ BEGIN
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);
END;
@ -745,7 +745,7 @@ END;
.
/
SELECT * FROM Tlignes;
SELECT * FROM Tligne;
}
\subsection{Traitements conditionnels \code{IF ... THEN ... END IF;}}
@ -767,7 +767,7 @@ La syntaxe pour \'ecrire une condition est la suivante :
\begin{exercice}
Calculer le nombre de fournisseurs dun produit donné. Sil ny a pas
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}.
\end{exercice}
@ -795,11 +795,11 @@ IF dnbfournisseurs = 0 THEN
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
INSERT INTO Tlignes VALUES('Le nombre de fournisseur du produit'
INSERT INTO Tligne VALUES('Le nombre de fournisseur du produit'
||'\&vnoproduit'||' est '|| dnbfournisseur);
END IF;
@ -809,7 +809,7 @@ END;
.
/
SELECT * FROM Tlignes;
SELECT * FROM Tligne;
}
\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{verbatim}
CREATE TABLE tligne (ligne VARCHAR2(200));
CREATE TABLE Tligne (ligne VARCHAR2(200));
VARIABLE n NUMBER
PROMPT taper n
ACCEPT n
@ -845,12 +845,12 @@ BEGIN
fn := fn * i;
END LOOP;
INSERT INTO tligne
INSERT INTO Tligne
VALUES ( 'Factorielle de '|| TO_CHAR(n)||, ,TO_CHAR(fn));
END;
/
SELECT * FROM tligne;
DROP TABLE tligne;
SELECT * FROM Tligne;
DROP TABLEl Tligne;
\end{verbatim}
\end{exemple}
@ -868,10 +868,10 @@ Les types d'erreurs sont les suivants :
\begin{exemple} Les résultats à afficher sont placés dans
une table \code{tligne}.
une table \code{Tligne}.
\begin{verbatim}
create table tligne ( ligne varchar2(150));
create table Tligne (Tligne varchar2(150));
variable vnoproduit char(4)
prompt taper la référence du produit à rechercher :
accept vnoproduit
@ -887,16 +887,16 @@ dnoproduit := &vnoproduit ;
dmessage := 'Référence inconnue ';
select designation into ddesignation From tproduit where noproduit = dnoproduit ;
insert into tligne values ('Désignation: ' || ddesignation);
insert into Tligne values ('Désignation: ' || ddesignation);
exception
when no_data_found then
insert into tligne values ( dmessage);
insert into Tligne values ( dmessage);
end ;
.
/
select * from tligne;
drop table tligne;
select * from Tligne;
drop table Tligne;
\end{verbatim}
\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.]
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
INSERT INTO tproduit VALUES (dnoproduit, ddesignation ...);
EXCEPTION
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{verbatim}
\end{exemple}
@ -1001,8 +1001,8 @@ END;
EXCEPTION
WHEN OTHERS THEN
dmess2 := SQLERRM;
INSERT INTO tligne VALUES (dmess1);
INSERT INTO tligne VALUES (dmess2);
INSERT INTO Tligne VALUES (dmess1);
INSERT INTO Tligne VALUES (dmess2);
COMMIT;
END;
\end{verbatim}

Loading…
Cancel
Save