\documentclass[12pt]{article}
%\usepackage{moodle}
\usepackage{sanssolmoodle}
\usepackage[T1]{fontenc} 

\begin{document}

\begin{quiz}{Quizz Cours PRO*C, Chapitre 1.5 a 1.7}


\begin{multi}[multiple, points=1]{01-SQLCA.H}
La structure de donn\'ees SQLCA sert \`a quoi ? 
\item* \`a stocker les donn\'ees du compte rendu d'ex\'ecution d'un ordre SQL
\item \`a remplir des lignes de code dans le programme
\end{multi}

\begin{multi}[points=1]{02-SQLCA.H}
La variable sqlcode sert \`a quoi ?
\item* stocker le code retour r\'esultant de l'ex\'ecution de l'ordre SQL
\item stocker le code du traitement SQL
\end{multi}

\begin{multi}[multiple, points=1]{03-SQLCA.H}
La variable sqlca.sqlcode peux prendre plus valeurs.\\
Quelle valeur correspond \`a sa d\'efinition ?
\item* =0 - traitement d\'eroul\'e sans erreur
\item =0 - aucun code retour
\item* >0 - traitement d\'eroul\'e sans erreur mais avec un code d'\'etat
\item >0 - traitement en erreur
\item* < 0 - traitement avec des erreurs
\item <0 - traitement d\'eroul\'e sans erreur
\end{multi}

\begin{multi}[multiple, points=1]{04-SQLCA.H}
La variable sqlerrd[2] sert \`a quoi ?
\item \`a se trouver entre la position 1 et 3
\item* donner le nombre de lignes modifi\'ees ou rajout\'ees ou ramen\'ees par un ordre SQL
\end{multi}

\begin{multi}[multiple, points=1]{05-SQLCA.H}
Quelle est la bonne syntaxe pour inclure le fichier SQLCA ?
\item INCLUDE SQLCA.H;
\item* EXEC SQL INCLUDE SQLCA.H;
\item SQLCA.H;
\end{multi}

\begin{multi}[multiple, points=1]{06-SQLCA.H}
O\`u doit-on utiliser la structure sqlca pour connaitre le compte rendu de la commande SQL ex\'ecut\'ee ?
\item* Apr\`es chaque commande SQL
\item Avant chaque commande SQL
\end{multi}

\begin{multi}[multiple, points=1]{07-WHENEVER}
A quoi sert la commande WHENEVER ?
\item A faire n'importe, quoi n'importe o\`u et n'importe quand
\item* A permettre d'utiliser des directives qui sp\'ecifient le traitement \`a effectuer en cas d'erreur.
\end{multi}

\begin{multi}[multiple, points=1]{08-WHENEVER}
A quoi correspondent les valeurs possibles du premier param\`etre (type d'erreur) ?
\item* SQLERROR : \'equivalent au test sqlca.sqlcode < 0
\item SQLWARNING : \'equivalent au test sqlca.sqlcode < 0
\item* SQLWARNING : \'equivalent au test sqlca.sqlwarn[0] = 'W'
\item* NOT FOUND : sqlca.sqlcode = +1403
\item NOT FOUND : on ne trouve pas le compte rendu d'ex\'ecution de la commande SQL
\end{multi}

\begin{multi}[multiple, points=1]{09-WHENEVER}
A quoi correspond la valeur du deuxi\`eme param\`etre (type d'action) ?
\item* STOP : arr\`ete le programme avec ROLLBACK
\item STOP : arr\`ete la commande SQL
\item* CONTINUE : continue le traitement m\^eme si la commande SQL est en erreur
\item* GOTO passe le contr\^ole du programme au label suivant cette valeur
\item GOTO passe le contr\^ole du programme au sous-programme GoKu
\item* DO appelle une fonction qui suit cette valeur
\end{multi}

\begin{multi}[multiple, points=1]{10-Indicateur}
A quoi sert un indicateur de variables ?
\item\`a indiquer la variable
\item* \`a pour travailler avec les valeurs NULL
\item* \`a connaitre lse valeurs particuil\`eres des variables
\end{multi}

\begin{multi}[multiple, points=1]{11-Indicateur}
Un indicateur de variable h\^ote doit ?
\item* \^etre du tye short
\item un indic
\item* \^etre pr\'ec\'ed\'e de ':' lorsqu'il est utilis\'e dans une requ\^ete SQL
\item* \^etre pr\'ec\'ed\'e par une variable h\^ote dans un ordre SQL
\end{multi}

\begin{multi}[points=1]{12-Indicateur}
Quelles sont les bonnes associations valeur - explication pour une variable indicateur ?
\item 0 - pas d'enregistrement en base
\item* 0 - pas de probl\`emes
\item -1 - la valeur de la variable h\^ote associ\'e est NOT NULL
\item* -1 - la valeur de la variable h\^ote associ\'e est NULL
\item >0 - la valeur retourn\'ee dans la variable h\^ote est enti\`ere
\item* >0 - la valeur retourn\'ee dans la variable h\^ote est tronqu\'ee
\end{multi}

\begin{multi}[multiple, points=1]{13-Indicateur}
Quelles sont les instructions utilisant correctement l'indicateur indic-var ?
\item* EXEC SQL SELECT nomproduit INTO :varNomPdt:indic-var FROM Tproduit WHERE noproduit = 'P001';
\item EXEC SQL SELECT nomproduit INTO :indic-var FROM Tproduit WHERE noproduit = 'P001';
\item* IF (indic-var == -1){varNomPdt = ''}
\item* EXEC SQL UPDATE Tproduit SET nomproduit = :varNomPdt INDICATOR :indic-var;
\item EXEC SQL UPDATE Tproduit SET nomproduit = :varNomPdt:indic-var;
\end{multi}

\begin{multi}[multiple, points=1]{14-Curseur}
Quelle est la bonne d\'eclaration d'un curseur ?
\item EXEC SQL DECLARE nomCurs IS SELECT nomproduit FROM Tproduit;
\item* EXEC SQL DECLARE nomCurs FOR SELECT nomproduit FROM Tproduit;
\end{multi}

\begin{multi}[multiple, points=1]{15-Curseur}
Quelle est la bonne instruction d'ex\'ecution d'un curseur ?
\item EXEC SQL EXECUTE nomCurs;
\item* EXEC SQL OPEN nomCurs;
\end{multi}

\begin{multi}[multiple, points=1]{16-Curseur}
Quelle est la bonne instruction de lecture d'une ligne courante d'un curseur ?
\item* EXEC SQL FETCH nomCurs INTO :varNomPdt:indic-var;
\item* EXEC SQL FETCH nomCurs INTO :varNomPdt;
\end{multi}

\begin{multi}[multiple, points=1]{17-Curseur}
Comment sait-on qu'il n'y a plus de lignes dans la table du r\'esultat du curseur ?
\item sqlcode = 1401;
\item* sqlca.sqlcode = 1403;
\item nomCurs\%NOT FOUND;
\end{multi}

\begin{multi}[multiple, points=1]{18-Curseur}
Que retourne la lecture d'un curseur ferm\'e  ?
\item la derni\`ere ligne lue du curseur
\item* une erreur;
\end{multi}

\begin{multi}[multiple, points=1]{19-Curseur}
Qu'est ce qu'implique l'ouverture d'un curseur ?
\item* la cr\'eation de la table contenant le r\'esultat de la requ\^ete associ\'ee \`a ce curseur
\item la lecture de sa premi\`ere ligne
\end{multi}

\begin{multi}[multiple, points=1]{20-Curseur}
Un curseur peut retourner combien de ligne ?
\item* 0
\item* 1
\item* >1
\end{multi}

\end{quiz}
\end{document}


