parent
9e1eb0052e
commit
397f232dc8
@ -0,0 +1,192 @@
|
|||||||
|
\documentclass[12pt]{article}
|
||||||
|
%\usepackage{moodle}
|
||||||
|
\usepackage{sanssolmoodle}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\begin{quiz}{Quizz Cours 1, Chapitre 1 a 6.3}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{multi}[multiple,points=1]{01-PL/SQL}
|
||||||
|
Que signifie PL/SQL ?
|
||||||
|
\item Petit language / Simplement Qualifi\'e Libre
|
||||||
|
\item* Procedural Language / Structured Query Language
|
||||||
|
\item Process Limited / Streaming Query Listener
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[points=1]{02-Fichier de commandes SQL}
|
||||||
|
Est-ce que l'utilitaire SQL permet aux utilisateurs d'ex\'ecuter un programme PL/SQL ?
|
||||||
|
\item* VRAI
|
||||||
|
\item FAUX
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{03-Fichier de commandes SQL}
|
||||||
|
Que fait l'instruction ci-dessous ?\\
|
||||||
|
variable vnoproduit CHAR(6)
|
||||||
|
\item d\'eclaration 6 variables appel\'ees vnoproduit de type cha\^ine de caract\`eres de longueur variable
|
||||||
|
\item* d\'eclaration d'une variable appel\'ee vnoproduit de type cha\^ine de caract\`eres de longueur 6
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{04-Fichier de commandes SQL}
|
||||||
|
Quels sont les formats autoris\'es pour les ''bind variable'' ?
|
||||||
|
\item NUMERIC
|
||||||
|
\item* NUMBER
|
||||||
|
\item* CHAR(n)
|
||||||
|
\item* VARCHAR2(n)
|
||||||
|
\item STRING
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{05-Fichier de commandes SQL}
|
||||||
|
Quelle est la syntaxe correcte pour acc\`eder \`a la cha\^ine de caract\`eres stock\'ee dans la variable vnoproduit dans une requ\^ete SQL ?
|
||||||
|
\item SELECT * FROM tproduit WHERE Noproduit = vnoproduit;
|
||||||
|
\item* SELECT * FROM tproduit WHERE Noproduit = '\&vnoproduit';
|
||||||
|
\item SELECT * FROM tproduit WHERE Noproduit = \&vnoproduit;
|
||||||
|
\item SELECT * FROM tproduit WHERE Noproduit = :vnoproduit;
|
||||||
|
\item SELECT * FROM tproduit WHERE Noproduit = ':vnoproduit';
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{06-Fichier de commandes SQL}
|
||||||
|
Quelles sont les commandes utilis\'ees pour interagir avec les utilisateurs ?
|
||||||
|
\item* PRINT
|
||||||
|
\item IMPRIME
|
||||||
|
\item* PROMPT
|
||||||
|
\item AFFICHE
|
||||||
|
\item* ACCEPT
|
||||||
|
\item ENREG
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{07-Code PL/SQL}
|
||||||
|
Quelles sontt les affirmations justes ?
|
||||||
|
\item* En SQL les commandes sont transmises les unes apr\`es les autres et trait\'ees s\'epar\'ement par le moteur SQL
|
||||||
|
\item* En PL/SQL les blocs de commandes sont tranmis globalement au moteur SQL
|
||||||
|
\item En SQL et en PL/SQL les commandes sont transmises les unes apr\`es les autres et trait\'ees s\'epar\'ement par le moteur SQL
|
||||||
|
\item En SQL et en PL/SQL les commandes sont transmises en bloc au moteur SQL
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[points=1]{08-Programme PL/SQL}
|
||||||
|
Un programme PL/SQL type est-il compos\'e en 3 parties ?\\
|
||||||
|
- Commandes SQL+ pour la saisie d'information\\
|
||||||
|
- Bloc PL/SQL pour le traitement\\
|
||||||
|
- Commandes SQL+ pour afficher le r\'esultat
|
||||||
|
\item* VRAI
|
||||||
|
\item FAUX
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{09-Programme PL/SQL}
|
||||||
|
Identifiez les d\'efinition qui sont justes ?
|
||||||
|
\item* . : ce point indique la fin du mode PL/SQL
|
||||||
|
\item* / : d\'eclenche l'ex\'ecution du bloc PL/SQL
|
||||||
|
\item ; : ce point virgule indique la fin du mode PL/SQL
|
||||||
|
\item /* */ : d\'eclenche l'ex\'ecution du bloc PL/SQL
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{10-Struture d'un bloc PL/SQL}
|
||||||
|
Identifiez les affirmations qui sont justes ?
|
||||||
|
\item Le bloc PL/SQL est compos\'e de 3 sections obligatoires
|
||||||
|
\item* la section BEGIN est obligatoire
|
||||||
|
\item* Les sections DECLARE et EXCEPTION sont facultatives
|
||||||
|
\item le ; en fin d'instruction est facultatif
|
||||||
|
\item* on signale les commentaires par /* */ ou - - en d\'ebut de ligne
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{11-Type de variable en PL/SQL}
|
||||||
|
Quels sont les formats autoris\'es en PL/SQL ?
|
||||||
|
\item NUMERIC
|
||||||
|
\item* NUMBER
|
||||||
|
\item* CHAR(n)
|
||||||
|
\item* VARCHAR2(n)
|
||||||
|
\item STRING
|
||||||
|
\item* DATE
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{12-Type de variable en PL/SQL}
|
||||||
|
Quelles sont les d\'eclaration de variable qui sont justes ?
|
||||||
|
\item* dnom VARCHAR2(50);
|
||||||
|
\item dnom CHAR(50) = 'Le nom r\'eel';
|
||||||
|
\item* dnb NUMER := 0;
|
||||||
|
\item* dnom tproduit.nom \%type;
|
||||||
|
\item dnom tproduit.nom;
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{13-Type de variable en PL/SQL}
|
||||||
|
Est-ce que l'on peut d\'eclarer un tableau en PL/SQL ?
|
||||||
|
\item* VRAI
|
||||||
|
\item FAUX
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple,points=1]{14-Traitement du bloc BEGIN}
|
||||||
|
Quelle requ\^ete SQL est bien \'ecrite lorqu'elle est dans le bloc PL/SQL ?
|
||||||
|
\item SELECT designation FROM tProduit WHERE noProduit = 'P001';
|
||||||
|
\item* SELECT designation into ddesignation FROM tProduit WHERE noProduit = 'P001';
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{15-Traitement du bloc BEGIN}
|
||||||
|
Quelles sont les requ\^etes ci-dessous qui s'ex\'ecuteront sans erreur ?\\
|
||||||
|
Pour information : le produit P001 existe,\\ le produit P002 n'existe pas,\\ plusieurs produit ont un prix de vente \`a 15.
|
||||||
|
\item* SELECT designation into ddesignation FROM tProduit WHERE noProduit = 'P001';
|
||||||
|
\item SELECT designation into ddesignation FROM tProduit WHERE noProduit = 'P002';
|
||||||
|
\item SELECT designation into ddesignation FROM tProduit WHERE prixv = 15;
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[points=1]{16-Traitement du bloc BEGIN}
|
||||||
|
Les instruction SQL INSERT, UPDATE et DELETE ont aussi des changements pour s'ex\'ecuter dans un bloc PL/SQL ?
|
||||||
|
\item VRAI
|
||||||
|
\item* FAUX
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{17-Traitement du bloc BEGIN}
|
||||||
|
Quels sont les op\'erateurs utilis\'es dans les conditions PL/SQL ?
|
||||||
|
\item ==
|
||||||
|
\item* =
|
||||||
|
\item* !=
|
||||||
|
\item +=
|
||||||
|
\item* < >
|
||||||
|
\item \&
|
||||||
|
\item* IS NULL
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[points=1]{18-Traitement du bloc BEGIN}
|
||||||
|
Quelle est la bonne syntaxe pour le traitement conditionnel IF ?
|
||||||
|
\item je ne sais pas
|
||||||
|
\item* IF condition\\
|
||||||
|
THEN\\
|
||||||
|
instructions;\\
|
||||||
|
END IF;
|
||||||
|
\item IF condition\\
|
||||||
|
instructions;\\
|
||||||
|
END;
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{19-Traitement du bloc BEGIN}
|
||||||
|
Quelle est la bonne syntaxe pour le traitement conditionnel IF ?
|
||||||
|
\item je ne sais pas
|
||||||
|
\item* IF condition\\
|
||||||
|
THEN\\
|
||||||
|
instructions;\\
|
||||||
|
ELSE\\
|
||||||
|
instructions;\\
|
||||||
|
END IF;
|
||||||
|
\item IF condition\\
|
||||||
|
instructions;\\
|
||||||
|
ELSE\\
|
||||||
|
instructions;\\
|
||||||
|
END;
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\begin{multi}[multiple, points=1]{20-Traitement du bloc BEGIN}
|
||||||
|
Quelle est la bonne syntaxe pour une boucle WHILE ?
|
||||||
|
\item je ne sais pas
|
||||||
|
\item* WHILE condition\\
|
||||||
|
LOOP\\
|
||||||
|
instructions;\\
|
||||||
|
END LOOP;
|
||||||
|
\item WHILE condition\\
|
||||||
|
instructions;\\
|
||||||
|
END WHILE;
|
||||||
|
\end{multi}
|
||||||
|
|
||||||
|
\end{quiz}
|
||||||
|
\end{document}
|
||||||
|
|
||||||
|
|
@ -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 ECEPTION
|
||||||
|
\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 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 r
|
||||||
|
\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 r
|
||||||
|
\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