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}
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}

Loading…
Cancel
Save