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


\begin{document}

\begin{quiz}{Quizz Cours PRO*C, Chapitre 1 a 1.4}


\begin{multi}[multiple, points=1]{01-Interface PRO*C}
Le PRO*C c'est : 
\item* une interface entre le langage C et le SGBD Oracle
\item le Professionnel Etoile C
\item* une interface de pr\'ecompilation o\`u les ordres SQL pr\'esents dans le code C sont traduits par un pr\'ecompilateur
\item une interface entre un PROfessionnel et un Client
\end{multi}

\begin{multi}[points=1]{02-Structure}
Un fichier PRO*C se structure de la m\^eme mani\`ere qu'un fichier C ?
\item* VRAI
\item FAUX
\end{multi}

\begin{multi}[multiple, points=1]{03-Structure}
Pour acc\`eder aux donn\'ees de la base de donn\'ees que faut-il faire ?
\item* mettre en place la connexion et d\'econnexion \`a la base de donn\'ees
\item Prendre Rapidement en Otage le Client
\item* Se servir de commandes SQL (SELECT, INSERT, ...)
\end{multi}

\begin{multi}[multiple, points=1]{04-INCLUDE}
Quelle structure C doit-on inclure dans le programme PRO*C pour connaitre les r\'esultats d'un ordre SQL?
\item Aucune
\item* SQLCA.H
\item PL/SQL
\end{multi}

\begin{multi}[multiple, points=1]{05-INCLUDE}
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-Variables}
La d\'eclaration des variables h\^otes s'effectue exactement comme en C ?
\item* VRAI
\item FAUX
\end{multi}

\begin{multi}[multiple, points=1]{07-Variables}
Les variables h\^otes sont utilis\'ees o\`u ?
\item uniquement dans les ordres SQL
\item* dans les ordres SQL et dans le programme C
\end{multi}

\begin{multi}[multiple, points=1]{08-Variables}
Les d\'eclarations ci-dessous sont-elles justes ?\\
int vnbOccurence;\\
VARCHAR vNom[31]; 
\item* VRAI
\item FAUX
\end{multi}

\begin{multi}[multiple, points=1]{09-Variables}
Quelles sont les variables qui sont bien utilis\'ees ?
\item DATE
\item FROM
\item* EXEC SQL SELECT fonction INTO :vfonction FROM TEmploi WHERE noEmp = 501;
\item* EXEC SQL UPDATE TEmploi SET salaire = :vSalaire WHERE noEmp = 501;
\item EXEC SQL UPDATE TEmploi SET salaire = vSalaire WHERE noEmp = 501;
\end{multi}

\begin{multi}[multiple, points=1]{10-Variables}
Quelles sont les affirmations ci-dessous qui sont vraies ?
\item int peut \^etre utilis\'e en C pour recevoir la valeur d'une colonne NUMBER(10,2)
\item* float peut \^etre utilis\'e en C pour recevoir la valeur d'une colonne NUMBER(10,2)
\item* int peut \^etre utilis\'e en C pour recevoir la valeur d'une colonne NUMBER(10)
\end{multi}

\begin{multi}[multiple, points=1]{11-Connexion}
Que doit-on passer \`a l'instruction CONNECT comme param\`etre ?
\item* le login
\item la connexion
\item* le mot de passe
\item* le nom du serveur h\^ote
\end{multi}

\begin{multi}[points=1]{12-Connexion}
Que doit-on faire pour s'assurer que la connexion soit viable ?
\item afficher \`a l'utilisateur le message Connexion r\'eussie avec succ\`es.
\item* tester que la variable sqlcq.sqlcode soit bien \'egale \`a 0
\end{multi}

\begin{multi}[multiple, points=1]{13-Deconnexion}
Quel est le but de la fonction d\'econnexion ?
\item* ex\'ecuter le COMMIT si tout c'est bien pass\'e
\item rajouter du code \`a mon programme
\item* ex\'ecuter le ROLLBACK s'il y a une erreur
\end{multi}

\begin{multi}[multiple, points=1]{14-Corps de l'application}
Comment int\'egrer une instruction SQL de cr\'eation de table dans le programme PRO*C ?
\item CREATE TABLE TLigne(ligne VARCHAR2(200));
\item* EXEC SQL CREATE TABLE TLigne(ligne VARCHAR2(200));
\end{multi}

\begin{multi}[multiple, points=1]{15-Corps de l'application}
Comment int\'egrer une instruction SQL d'insertion d'une ligne dans une table dans le programme PRO*C ?
\item INSERT INTO TLigne VALUES('TEST');
\item* EXEC SQL INSERT INTO TLigne VALUES('TEST');
\item* EXEC SQL INSERT INTO TLigne(ligne) VALUES('TEST');
\end{multi}

\begin{multi}[multiple, points=1]{16-Corps de l'application}
Comment int\'egrer une instruction SQL de mise \`a jour d'une ligne dans une table dans le programme PRO*C ?
\item* EXEC SQL UPDATE TLigne SET ligne = 'TEST2' WHERE ligne = 'TEST';
\item UPDATE TLigne SET ligne = 'TEST2' WHERE ligne = 'TEST';
\end{multi}

\begin{multi}[multiple, points=1]{17-Corps de l'application}
Comment int\'egrer une instruction SQL de suppression d'une ligne dans une table dans le programme PRO*C ?
\item* EXEC SQL DELETE FROM TLigne WHERE ligne = 'TEST';
\item DELETE FROM TLigne WHERE ligne = 'TEST';
\end{multi}

\begin{multi}[multiple, points=1]{18-Corps de l'application}
Comment int\'egrer une instruction SQL de suppression d'une table dans le programme PRO*C ?
\item DROP TABLE TLigne PURGE;
\item* EXEC SQL DROP TABLE TLigne;
\end{multi}

\begin{multi}[multiple, points=1]{19-Corps de l'application}
Comment int\'egrer une instruction SQL pour s\'electionner une ligne d'une table dans le programme PRO*C ?
\item* EXEC SQL SELECT fonction INTO :vfonction FROM TEmploi WHERE noEmp = 501;
\item EXEC SQL SELECT fonction FROM TEmploi WHERE noEmp = 501;
\item SELECT fonction INTO :vfonction FROM TEmploi WHERE noEmp = 501;
\end{multi}

\begin{multi}[multiple, points=1]{20-Corps de l'application}
Quelles sont les instructions ci-dessous qui sont justes ?
\item* EXEC SQL TRUNCATE TABLE TEmploi;
\item EXEC SQL SELECT fonction INTO :vfonction FROM TEmploi;
\item* EXEC SQL UPDATE TLigne SET ligne = 'TEST2' WHERE ligne = 'TEST';
\item EXEC SQL UPDATE TLigne SET ligne = vligne WHERE ligne = 'TEST';
\end{multi}

\end{quiz}
\end{document}


