You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
3.2 KiB
143 lines
3.2 KiB
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#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);
|
|
}
|
|
|
|
|