diff --git a/EXOS/Exam2020.tex b/EXOS/Exam2020.tex index 994140e..ff250df 100644 --- a/EXOS/Exam2020.tex +++ b/EXOS/Exam2020.tex @@ -711,67 +711,67 @@ NumCreneau: XXXXX heure début : X Benefice :9999€ nb joueurs : 9999 \section*{Rappels} -Les fonctions \code{connexion}, \code{deconnexion} et \code{sql\_error} -sont rappell\'ees ci-dessous. Elles ne sont pas \`a r\'e\'ecrire sur -vos copies, mais \`a utiliser dans les exercices si besoin. - -\begin{verbatim} -void connexion() -{ VARCHAR uid[50]; - char login[20]; - char passwd[20]; - printf("Donner votre login : "); - scanf("%s",login); - printf("\nDonnez votre mot de passe Oracle : "); - scanf("%s",passwd); - printf("\n"); - strcpy(uid.arr,login); - strcat(uid.arr,"/"); - strcat(uid.arr,passwd); - strcat(uid.arr,"@kirov"); - uid.len=strlen(uid.arr); - - EXEC SQL CONNECT :uid; - if (sqlca.sqlcode==0) - printf(" Connexion réussie avec succès.\n\n"); - else - { - printf ("Problème à la connexion.\n\n"); - exit(1); - }} -\end{verbatim} - - -\begin{verbatim} -void deconnexion(int validation) -{ - if (validation == 1) - { EXEC SQL COMMIT WORK RELEASE; - } else - { EXEC SQL ROLLBACK WORK RELEASE;} - printf("Déconnexion sans problème.\n"); -} -\end{verbatim} - -\begin{verbatim} -void sql_error(char *msg) -{ char err_msg[128]; - long buf_len, msg_len; - - EXEC SQL WHENEVER SQLERROR CONTINUE; - - printf("%s\n", msg); - buf_len = sizeof (err_msg); - sqlglm(err_msg, &buf_len, &msg_len); - - if (msg_len > buf_len) - msg_len = buf_len; - - printf("%.*s\n", msg_len, err_msg); - deconnexion(0); - exit(1); -} -\end{verbatim} +%% Les fonctions \code{connexion}, \code{deconnexion} et \code{sql\_error} +%% sont rappell\'ees ci-dessous. Elles ne sont pas \`a r\'e\'ecrire sur +%% vos copies, mais \`a utiliser dans les exercices si besoin. + +%% \begin{verbatim} +%% void connexion() +%% { VARCHAR uid[50]; +%% char login[20]; +%% char passwd[20]; +%% printf("Donner votre login : "); +%% scanf("%s",login); +%% printf("\nDonnez votre mot de passe Oracle : "); +%% scanf("%s",passwd); +%% printf("\n"); +%% strcpy(uid.arr,login); +%% strcat(uid.arr,"/"); +%% strcat(uid.arr,passwd); +%% strcat(uid.arr,"@kirov"); +%% uid.len=strlen(uid.arr); + +%% EXEC SQL CONNECT :uid; +%% if (sqlca.sqlcode==0) +%% printf(" Connexion réussie avec succès.\n\n"); +%% else +%% { +%% printf ("Problème à la connexion.\n\n"); +%% exit(1); +%% }} +%% \end{verbatim} + + +%% \begin{verbatim} +%% void deconnexion(int validation) +%% { +%% if (validation == 1) +%% { EXEC SQL COMMIT WORK RELEASE; +%% } else +%% { EXEC SQL ROLLBACK WORK RELEASE;} +%% printf("Déconnexion sans problème.\n"); +%% } +%% \end{verbatim} + +%% \begin{verbatim} +%% void sql_error(char *msg) +%% { char err_msg[128]; +%% long buf_len, msg_len; + +%% EXEC SQL WHENEVER SQLERROR CONTINUE; + +%% printf("%s\n", msg); +%% buf_len = sizeof (err_msg); +%% sqlglm(err_msg, &buf_len, &msg_len); + +%% if (msg_len > buf_len) +%% msg_len = buf_len; + +%% printf("%.*s\n", msg_len, err_msg); +%% deconnexion(0); +%% exit(1); +%% } +%% \end{verbatim} \section*{MEMO} @@ -799,33 +799,33 @@ EXCEPTION END ; \end{verbatim} -\subsection*{Langage PRO*C} -\begin{verbatim} -struct {long sqlcode;/* code resultant de l'exécution - =0 -> ok, - >0 -> ok avec un code d'état, - <0 -> erreur */ - struct { - unsigned short sqlerrml;/*longueur du message*/ - char sqlerrmc[70];/*message d'erreur*/ - } sqlerrm; - long sqlerrd[6];/* seul sqlerrd[2] est utilisé -> donne le nombre de lignes modifiées - UPDATE ou rajoutées par INSERT ou ramenées par un SELECT*/ - char sqlwarn[8];/*sqlwarn[0] 'W’ -> warning*/ - sqlwarn[0] = '' /*-> pas de warning*/ - sqlwarn[1] = 'W'/*-> troncation numérique ou char*/ - sqlwarn[2] = 'W'/*-> valeur Null est ignore */ - sqlwarn[3] = 'W'/*-> plus de champs dans SELECT que de variables pour recevoir*/ - sqlwarn[4] = 'W'/*-> toutes les lignes d'une table sont touchées (par DELETE ou - UPDATE par exemple)*/ - sqlwarn[5] /* inutilisé */ - sqlwarn[6] = 'W'/*-> Oracle a dû exécuter un rollback */ - sqlwarn[7] = 'W'/*-> la donnée ramenée par un FETCH a été modifié - depuis que la clause SELECT a été executé */ -} sqlca; -:var_hote INDICATOR :indicateur -:var_hote :indicateur -\end{verbatim} +%% \subsection*{Langage PRO*C} +%% \begin{verbatim} +%% struct {long sqlcode;/* code resultant de l'exécution +%% =0 -> ok, +%% >0 -> ok avec un code d'état, +%% <0 -> erreur */ +%% struct { +%% unsigned short sqlerrml;/*longueur du message*/ +%% char sqlerrmc[70];/*message d'erreur*/ +%% } sqlerrm; +%% long sqlerrd[6];/* seul sqlerrd[2] est utilisé -> donne le nombre de lignes modifiées +%% UPDATE ou rajoutées par INSERT ou ramenées par un SELECT*/ +%% char sqlwarn[8];/*sqlwarn[0] 'W’ -> warning*/ +%% sqlwarn[0] = '' /*-> pas de warning*/ +%% sqlwarn[1] = 'W'/*-> troncation numérique ou char*/ +%% sqlwarn[2] = 'W'/*-> valeur Null est ignore */ +%% sqlwarn[3] = 'W'/*-> plus de champs dans SELECT que de variables pour recevoir*/ +%% sqlwarn[4] = 'W'/*-> toutes les lignes d'une table sont touchées (par DELETE ou +%% UPDATE par exemple)*/ +%% sqlwarn[5] /* inutilisé */ +%% sqlwarn[6] = 'W'/*-> Oracle a dû exécuter un rollback */ +%% sqlwarn[7] = 'W'/*-> la donnée ramenée par un FETCH a été modifié +%% depuis que la clause SELECT a été executé */ +%% } sqlca; +%% :var_hote INDICATOR :indicateur +%% :var_hote :indicateur +%% \end{verbatim} %\includepdf[pages=-]{MEMO.pdf}