From cbe8a1003ded2f60af475bf3dc66d54cd601cd32 Mon Sep 17 00:00:00 2001 From: pascal Date: Mon, 15 Mar 2021 10:42:57 +0100 Subject: [PATCH] sol --- EXOS/Exam2019.tex | 65 +++++++++++++++++------------------------------ 1 file changed, 23 insertions(+), 42 deletions(-) diff --git a/EXOS/Exam2019.tex b/EXOS/Exam2019.tex index a64bda4..8b84357 100644 --- a/EXOS/Exam2019.tex +++ b/EXOS/Exam2019.tex @@ -529,8 +529,7 @@ Nombre de personnels total sur l'hopital : ZZ2 \begin{SaveVerbatim}{questionune} -int main(int argc, char** argv) -{ +int main(int argc, char** argv){ varchar vnom[20]; varchar vprenom[20]; varchar vhopital[20]; @@ -539,81 +538,63 @@ int fini; int fin=1; int vnbnom; int vnbhopit; -int nb=1; - +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----------------------------*/ + printf("\n Appel de la fonction deconnexion"); 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'; - + 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 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 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) - { + 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 ; */ + printf("\n Affichage des personnels de l'hopital %.*s : \n", + vhopital.len,vhopital.arr); + 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); 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) - { + 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); + 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;} - } + 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} + \cache{\begin{small} \BUseVerbatim{questionune} -% \end{small} + \end{small} } \begin{SaveVerbatim}{Insertion}