diff --git a/COURS/example.pc b/COURS/example.pc new file mode 100644 index 0000000..ba46ad6 --- /dev/null +++ b/COURS/example.pc @@ -0,0 +1,78 @@ +#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("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); + } +} + +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"); +} + +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); +} + +int main(int argc, char** argv) +{ + VARCHAR msg_buf[51]; + + EXEC SQL WHENEVER SQLERROR DO sql_error("Oracle error\n"); + connexion(); + EXEC SQL CREATE TABLE hello_world(msg VARCHAR2(50)); + EXEC SQL INSERT INTO hello_world VALUES ('Hello world!'); + EXEC SQL COMMIT; + EXEC SQL SELECT msg INTO :msg_buf FROM hello_world WHERE rownum <= 1; + + printf("%.*s\n", msg_buf.len,msg_buf.arr); + deconnexion(1); + return(0); +} \ No newline at end of file