\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}