/****************************************************************/ /* Dynamic SQL : Execute Immediate (Section 3.10.1) */ /* Chapter 3; Oracle Programming -- A Primer */ /* by R. Sunderraman */ /****************************************************************/ #include #define TRUE 1 #define FALSE 0 EXEC SQL begin declare section; char sql_stmt[256]; varchar userid[10], password[15]; EXEC SQL end declare section; EXEC SQL include sqlca; main() { int loginok=FALSE,logintries=0; do { printf("Enter your USERID: "); scanf("%s", userid.arr); userid.len = strlen(userid.arr); printf("Enter your PASSWORD: "); system("stty -echo"); scanf("%s", password.arr); password.len = strlen(password.arr); system("stty echo"); printf("\n"); EXEC SQL connect :userid identified by :password; if (sqlca.sqlcode == 0) loginok = TRUE; else printf("Connect Failed\n"); logintries++; } while ((!loginok) && (logintries <3)); if ((logintries == 3) && (!loginok)) { printf("Too many tries at signing on!\n"); exit(0); } strcpy(sql_stmt,"update employees set hdate=sysdate where eno = 1001"); EXEC SQL set transaction read write; EXEC SQL execute immediate :sql_stmt; EXEC SQL commit release; exit(0); }