parent
3601631663
commit
4b20a4bbc7
@ -0,0 +1,184 @@
|
|||||||
|
\documentclass[12pt]{article}
|
||||||
|
%\usepackage{moodle}
|
||||||
|
\usepackage{sanssolmoodle}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\begin{quiz}{Quizz Cours 2, Chapitre 7 a 8.2}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{multi}[multiple,points=1]{01-Gestion des erreurs}
|
||||||
|
Que se passe-t-il lorsqu'une instruction PL/SQL se passe mal ?
|
||||||
|
\item rien
|
||||||
|
\item* une exception est lev\'ee
|
||||||
|
\item le programme appelle un ami programme
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[points=1]{02-Gestion des erreurs}
|
||||||
|
O\`u est ce que l'on peut sp\'ecifier un comportement adapt\'e lorsqu'une erreur est lev\'ee ?
|
||||||
|
\item* dans la section EXCEPTION
|
||||||
|
\item Nulle part
|
||||||
|
\item dans une section CATCH
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{03-Gestion des erreurs}
|
||||||
|
Combien existe-t-il de types d'erreurs ?
|
||||||
|
\item plus de 2
|
||||||
|
\item* 2 types, celle d'Oracle et celle d\'eclar\'ee par le d\'eveloppeur
|
||||||
|
\item qu'un seul et unique : le type erreur
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{04-Gestion des erreurs}
|
||||||
|
O\`u se situe la section EXCEPTION par rapport aux autres ?
|
||||||
|
\item DECLARE EXCEPTION BEGIN
|
||||||
|
\item* DECLARE BEGIN EXCEPTION
|
||||||
|
\item EXCEPTION DECLARE BEGIN
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{05-Gestion des erreurs}
|
||||||
|
O\`u doit-on initilialis\'e le message d'erreur possible li\'e \`a une requ\^ete SQL ?
|
||||||
|
\item Apr\`es la requ\^ete car avant on n'a pas l'erreur
|
||||||
|
\item* Avant la requ\^ete car s'il y a une erreur on n'ex\'ecute pas le code apr\`es la reque\^ete
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{06-Gestion des erreurs}
|
||||||
|
Quelles sont les variables utilis\'ees pour documenter l'erreur ?
|
||||||
|
\item* SQLCODE
|
||||||
|
\item ERREUR
|
||||||
|
\item* SQLERRM
|
||||||
|
\item ERROR
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{07-Gestion des erreurs}
|
||||||
|
Que se passe-t-il lors d'une erreur ?
|
||||||
|
\item* On ex\'ecute la section EXCEPTION puis on sort du traitement
|
||||||
|
\item On sort du programme sans ex\'ecuter la section EXCEPTION parce qu'on est en erreur
|
||||||
|
\item On ex\'ecute le code jusqu'\`a la section EXCEPTION puis celui de la section EXCEPTION puis on finit le traitement
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{08-Gestion des erreurs}
|
||||||
|
Quels sont les couples code et description qui sont justes ?
|
||||||
|
\item* +100 - NO\_DATA\_FOUND
|
||||||
|
\item 0 - FATAL\_ERROR
|
||||||
|
\item* -1422 - TOO\_MANY\_ROWS
|
||||||
|
\item* -1 - DUP\_VAL\_ON\_INDEX
|
||||||
|
\item -666 - DEVIL\_ERROR
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{09-Gestion des erreurs}
|
||||||
|
Que fait le code ci-dessous ?\\
|
||||||
|
BEGIN\\
|
||||||
|
INSERT INTO ttest (col1,col2,col3) VALUES (dcol1, dcol2, dcol3);\\
|
||||||
|
EXCEPTION\\
|
||||||
|
WHEN DUP\_VAL\_ON\_INDEX THEN\\
|
||||||
|
INSERT INTO Tligne VALUES (dcol1 {\textbar}{\textbar} ' d\'ej\`a existant');\\
|
||||||
|
END;
|
||||||
|
\item Il insert une ligne dans la table ttest et insert une ligne dans la table Tligne
|
||||||
|
\item* Il insert une ligne dans la table ttest ou il insert une ligne dans la table Tligne
|
||||||
|
\item Il n'ins\'ere aucune ligne dans aucune table
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{10-Gestion des erreurs}
|
||||||
|
Est ce que le code ci-dessous permet de bien g\'erer l'erreur utilisateur ?\\
|
||||||
|
DECLARE\\
|
||||||
|
nom\_erreur EXCEPTION;\\
|
||||||
|
BEGIN\\
|
||||||
|
IF 0 THEN\\
|
||||||
|
RAISE nom\_erreur;\\
|
||||||
|
END IF;\\
|
||||||
|
EXCEPTION\\
|
||||||
|
WHEN OTHERS THEN\\
|
||||||
|
INSERT INTO Tligne VALUES('Erreur globale');\\
|
||||||
|
WHEN nom\_erreur THEN\\
|
||||||
|
INSERT INTO Tligne VALUES('nom\_Erreur');\\
|
||||||
|
END;
|
||||||
|
\item VRAI
|
||||||
|
\item* FAUX
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{11-Les curseurs}
|
||||||
|
Quel est le but d'utiliser un curseur plut\^ot qu'une requ\^ete simple ?
|
||||||
|
\item par ce qu'est plus facile
|
||||||
|
\item* pour lire le r\'esultat d'une requ\^ete dans le cas o\`u elle d\'elivre plusieurs lignes
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{12-Les curseurs}
|
||||||
|
Quelle est la bonne syntaxe pour d\'eclarer un curseur ?
|
||||||
|
\item* CURSOR r IS SELECT codeRayon FROM trayon WHERE etage = detage;
|
||||||
|
\item CURSOR r IS SELECT codeRayon INTO dcodeRayon FROM trayon WHERE etage = detage;
|
||||||
|
\item CURSOR SELECT codeRayon FROM trayon WHERE etage = detage;
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{13-Les curseurs}
|
||||||
|
Que fait l'instruction OPEN du curseur ?
|
||||||
|
\item* Elle ex\'ecute la req\^ete et stocke le r\'esultat dans la variable curseur
|
||||||
|
\item Elle ferme le curseur
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{14-Les curseurs}
|
||||||
|
Quelle est la bonne syntaxe de l'instruction FETCH du curseur ci-dessous ?\\
|
||||||
|
CURSOR r IS SELECT codeRayon, etage FROM trayon WHERE etage = detage;
|
||||||
|
\item FETCH r INTO dcodeRayon;
|
||||||
|
\item FETCH r;
|
||||||
|
\item* FETCH r INTO dcodeRayon, detage;
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{15-Les curseurs}
|
||||||
|
Comment sait-on s'il reste des donn\'ees \`a lire dans le curseur ?
|
||||||
|
\item On ne peut pas le savoir
|
||||||
|
\item* avec la variable nom\_curseur\%FOUND
|
||||||
|
\item avec SQLCODE et SQLERRM
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{16-Les curseurs}
|
||||||
|
Quelle boucle ci-dessous permet de lire tous les enregistrements d'un curseur ?
|
||||||
|
\item WHILE r\%FOUND\\
|
||||||
|
LOOP\\
|
||||||
|
instructions;\\
|
||||||
|
END LOOP;
|
||||||
|
\item* WHILE r\%FOUND\\
|
||||||
|
LOOP\\
|
||||||
|
instructions;\\
|
||||||
|
FETCH r INTO dcodeRayon,detage;\\
|
||||||
|
END LOOP;
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{17-Les curseurs}
|
||||||
|
Que fait l'instruction CLOSE du curseur ?
|
||||||
|
\item Elle ex\'ecute la req\^ete et stocke le r\'esultat dans la variable curseur
|
||||||
|
\item* Elle ferme le curseur
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{18-Les curseurs}
|
||||||
|
Quelle est la bonne syntaxe pour traiter le cas o\`u il n'y a aucun enregistrement ?
|
||||||
|
\item je ne sais pas
|
||||||
|
\item* IF NOT r\%FOUND
|
||||||
|
\item* IF r\%NOTFOUND
|
||||||
|
\item IF r IS NULL
|
||||||
|
\item IF r = ''
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{19-Les curseurs}
|
||||||
|
Peut-on mettre \`a jour la ligne courante du curseur ?
|
||||||
|
\item* VRAI
|
||||||
|
\item FAUX
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{20-Les curseurs}
|
||||||
|
Quelle est la bonne syntaxe pour mettre \`a jour la ligne courante du curseur ?
|
||||||
|
\item je ne sais pas
|
||||||
|
\item CURSOR r IS SELECT codeRayon FROM trayon;\\
|
||||||
|
OPEN r;\\
|
||||||
|
FETCH r INTO dcodeRayon;\\
|
||||||
|
UPDATE trayon SET nomRayon = dnomRayon WHERE CURRENT OF r;
|
||||||
|
\item* CURSOR r IS SELECT codeRayon FROM trayon FOR UPDATE;\\
|
||||||
|
OPEN r;\\
|
||||||
|
FETCH r INTO dcodeRayon;\\
|
||||||
|
UPDATE trayon SET nomRayon = dnomRayon WHERE CURRENT OF r;
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\end{quiz}
|
||||||
|
\end{document}
|
||||||
|
|
||||||
|
|
Loading…
Reference in new issue