#include #include #include #define size_t long EXEC SQL INCLUDE SQLCA.H; EXEC SQL INCLUDE SQLDA.H; EXEC SQL INCLUDE ORACA.H; void connexion() { VARCHAR uid[50]; char login[20]; char passwd[20]; printf("\n"); strcpy(uid.arr,"palafour"); strcat(uid.arr,"/"); strcat(uid.arr,"1s;ph;;1"); 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); } } void deconnexion(int validation) { if (validation == 1) { EXEC SQL COMMIT WORK RELEASE; } else { EXEC SQL ROLLBACK WORK RELEASE; } printf("\nDéconnexion sans problème.\n"); } 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); } void traitErreur(char *msg) { EXEC SQL WHENEVER SQLERROR CONTINUE; printf("%s\n", msg); deconnexion(0); exit(1); } 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); }