master
Pascal LAFOURCADE 4 years ago
parent b90c109699
commit 749bf84f72

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

Loading…
Cancel
Save