Pascal LAFOURCADE 4 years ago
parent 4703f350d1
commit 7efa04fb34

@ -527,8 +527,168 @@ Nombre de personnels total sur l'hopital : ZZ2
%% affectation entre un patient et un membre du pesonnel. V\'erifier %% affectation entre un patient et un membre du pesonnel. V\'erifier
%% que le patient et le personel existent d\'ej\`a. %% que le patient et le personel existent d\'ej\`a.
\begin{SaveVerbatim}{questionune}
int main(int argc, char** argv)
{
varchar vnom[20];
varchar vprenom[20];
varchar vhopital[20];
char vidhopital[6];
int fini;
int fin=1;
int vnbnom;
int vnbhopit;
int nb=1;
EXEC SQL WHENEVER SQLERROR DO sql_error("Oracle error\n");
printf("\n Appel de la fonction connexion");
connexion();
printf("\n Appel de la fonction deconnexion");
/*----------------------------------lecture----------------------------*/
EXEC SQL WHENEVER SQLERROR DO sql_error("Oracle error\n");
/* SELECT p.Nom, p.Prenom, h.Nom FROM PERSONNEL p, HOPITAL h WHERE h.id_hopital = p.id_hopital and p.id_personnel='PE01'; */
/* printf("\nUn exemple PE01 \n");*/
EXEC SQL SELECT p.Nom, p.Prenom, h.Nom INTO :vnom, :vprenom, :vhopital FROM PERSONNEL p, HOPITAL h WHERE h.id_hopital = p.id_hopital and p.id_personnel='PE01';
vnom.len=strlen(vnom.arr);
vprenom.len=strlen(vprenom.arr);
vhopital.len=strlen(vhopital.arr);
printf("\n TEST pour PE01 : Nom : %.*s prenom : %.*s hopital : %.*s \n", vnom.len, vnom.arr, vprenom.len, vprenom.arr, vhopital.len,vhopital.arr);
printf("\n Affichage les hopitaux \n");
/* SELECT COUNT(h.Nom) FROM HOPITAL h */
EXEC SQL SELECT COUNT(h.Nom) INTO :vnbhopit FROM HOPITAL h;
printf("\nNombre d'hopitaux est %d\n",vnbhopit);
EXEC SQL DECLARE hopitaux CURSOR FOR SELECT Nom, id_hopital FROM HOPITAL ORDER by Nom;
EXEC SQL OPEN hopitaux;
EXEC SQL FETCH hopitaux INTO :vhopital, :vidhopital;
if (sqlca.sqlcode == 1403) {fin = 0;}
while (fin!=0)
{
vhopital.len=strlen(vhopital.arr);
printf("\n Affichage des personnels de l'hopital %.*s : \n",vhopital.len,vhopital.arr);
/* SELECT COUNT(p.Nom) FROM PERSONNEL WHERE h.id_hopital = p.id_hopital; */
EXEC SQL SELECT COUNT(Nom) INTO :vnbnom FROM PERSONNEL WHERE id_hopital = :vidhopital;
printf("\nNombre de personnel de l'hopital %.*s est %d\n",vhopital.len,vhopital.arr, vnbnom);
/* SELECT p.Nom, p.Prenom FROM PERSONNEL p, WHERE h.id_hopital = p.id_hopital ORDER by p.prenom ; */
EXEC SQL DECLARE personnels CURSOR FOR SELECT Nom, Prenom FROM PERSONNEL WHERE id_hopital = :vidhopital ORDER by prenom;
EXEC SQL OPEN personnels;
fini=1;
EXEC SQL FETCH personnels INTO :vnom, :vprenom;
if (sqlca.sqlcode == 1403) {fini = 0;}
while (fini!=0)
{
vnom.len=strlen(vnom.arr);
vprenom.len=strlen(vprenom.arr);
printf("%d) Nom : %.*s Prenom : %.*s \n", nb, vnom.len, vnom.arr, vprenom.len, vprenom.arr);
nb++;
EXEC SQL FETCH personnels INTO :vnom, :vprenom;
if (sqlca.sqlcode == 1403) {fini = 0;}
}
EXEC SQL CLOSE personnels;
EXEC SQL FETCH hopitaux INTO :vhopital, :vidhopital;
if (sqlca.sqlcode == 1403) {fin = 0;}
}
printf(" Fini \n");
EXEC SQL CLOSE hopitaux;
deconnexion(1);
return(0);
}
\end{SaveVerbatim}
\cache{%\begin{small}
\BUseVerbatim{questionune}
% \end{small}
}
\begin{SaveVerbatim}{Insertion} \begin{SaveVerbatim}{Insertion}
TODO int main(int argc, char** argv)
{
char vidperso[20];
char vidfonction[20];
char vidhopital[6];
VARCHAR vnom[20];
VARCHAR vprenom[20];
char eidperso[20];
char eidfonction[20];
char eidhopital[6];
VARCHAR enom[20];
VARCHAR eprenom[20];
int nbhopital=0;
int nbfonction=0;
int nbperso=1;
EXEC SQL WHENEVER SQLERROR DO sql_error("Oracle error\n");
printf("\n Appel de la fonction connexion");
connexion();
printf("\n Appel de la fonction deconnexion");
/*----------------------------------lecture----------------------------*/
EXEC SQL WHENEVER SQLERROR DO sql_error("Oracle error\n");
printf("Saisir un nouveau personnel \n");
printf("Entrer son nom : ");
scanf("%s",vnom.arr);
vnom.len=strlen(vnom.arr);
printf("Entrer son prenom : ");
scanf("%s",vprenom.arr);
vprenom.len=strlen(vprenom.arr);
do{
printf("Entrer son id hopital : ");
scanf("%s",vidhopital);
EXEC SQL SELECT COUNT(*) INTO :nbhopital FROM HOPITAL WHERE id_hopital=:vidhopital;
//printf("nbhopital %d\n",nbhopital);
}
while (nbhopital !=1);
do{
printf("Entrer son id personnel : ");
scanf("%s",vidperso);
EXEC SQL SELECT COUNT(*) INTO :nbperso FROM PERSONNEL WHERE id_personnel=:vidperso;
if (nbperso==1){
printf("Ce numero de personnel existe deja\n");
EXEC SQL SELECT * INTO :eidperso, :eidfonction, :eidhopital, :enom, :eprenom FROM PERSONNEL WHERE id_personnel=:vidperso;
printf("ID PERSO : %s \n",eidperso);
printf("ID FONCTION : %s \n",eidfonction);
printf("ID HOPITAL : %s \n",eidhopital);
printf("NOM : %s \n",enom.arr);
printf("PRENOM : %s \n",eprenom.arr);
}
}
while (nbperso !=0);
do{
printf("Entrer son id fonction : ");
scanf("%s",vidfonction);
EXEC SQL SELECT COUNT(*) INTO :nbfonction FROM FONCTION WHERE id_fonction=:vidfonction;
}
while (nbfonction !=1);
EXEC SQL INSERT INTO PERSONNEL VALUES (:vidperso,:vidfonction,:vidhopital,:vnom,:vprenom);
EXEC SQL COMMIT;
deconnexion(1);
return(0);
}
\end{SaveVerbatim} \end{SaveVerbatim}
\cache{%\begin{small} \cache{%\begin{small}

Loading…
Cancel
Save