/* Program demonstrira nivo izolovanosti rr */ #include #include EXEC SQL INCLUDE SQLCA; /* deklaracija promenljivih kojima pristupa SQL * to su tzv host-promenljive */ EXEC SQL BEGIN DECLARE SECTION; long godina; char oznaka[21], naziv[51]; char pocetak[11], kraj[11]; EXEC SQL END DECLARE SECTION; /* funkcija za obradu greske */ int iserror(char err[]){ if (SQLCODE < 0){ printf("SQLCODE %ld %s\n\n", SQLCODE, err); return 1; } return 0; } /* za poziv funkcije greske koristice se makro */ #define CHECKERR(s) if (iserror(s)) exit(1); int main() { int i; /* povezujemo se na BP */ EXEC SQL CONNECT TO vstud user student using abcdef; CHECKERR("Connect"); /* deklarisemo kursor koji prolazi tabelom ispitni_rok */ EXEC SQL DECLARE ispitniRok CURSOR FOR select godina, oznaka, naziv, pocetak_prijavljivanja, kraj_prijavljivanja from ispitni_rok where godina = 2016 WITH CS; CHECKERR("Declare cursor"); /*dva puta se se otvoriri kursor ispitniRok(tj. dva put ce se ispisati njegov rezultat)*/ for(i=1;i<=3;i++) { printf("Citanje rezultata %d. put. Pritisnite neki taster za pocetak.\n", i); getchar(); EXEC SQL OPEN ispitniRok; CHECKERR("Open"); while(1){ EXEC SQL FETCH ispitniRok INTO :godina, :oznaka, :naziv, :pocetak, :kraj; CHECKERR("Fetch"); if(SQLCODE == 100) break; printf("Godina %d oznaka: %s i naziv %s. Prijavljivanje %s - %s\n", godina, oznaka, naziv, pocetak, kraj); printf("Pritisnite neki taster za dalje citanje."); getchar(); } EXEC SQL CLOSE ispitniRok; CHECKERR("Close"); } /* raskida se konekcija sa BP */ EXEC SQL CONNECT RESET; CHECKERR("Connect reset"); return 0; }