home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <sqlenv.h>
- #include <sqlca.h>
-
- int main(void)
- {
- EXEC SQL BEGIN DECLARE SECTION;
- char pname[10] = " ";
- short dept = 0;
- EXEC SQL END DECLARE SECTION;
-
- struct sqlca sqlca;
- printf( "\nSample C program: CURSOR " );
-
- EXEC SQL CONNECT TO sample IN SHARE MODE;
- if ( SQLCODE != 0 ) {
- printf( "\nCONNECT TO Error: SQLCODE = %ld", SQLCODE );
- exit(1);
- }
-
- EXEC SQL WHENEVER SQLERROR GO TO ext;
- EXEC SQL WHENEVER NOT FOUND GO TO cls; /* :rk.1:erk. */
-
- EXEC SQL DECLARE c1 CURSOR FOR /* :rk.2:erk. */
- SELECT name, dept FROM staff
- WHERE JOB='Mgr'
- FOR UPDATE OF job;
-
- EXEC SQL OPEN c1; /* :rk.3:erk. */
-
- do {
- EXEC SQL FETCH c1 INTO :pname, :dept; /* :rk.4:erk. */
-
- printf( "\n%s in dept. %d will be demoted to Clerk",
- pname, dept );
-
- EXEC SQL UPDATE staff SET job = 'Clerk' /* :rk.5:erk. */
- WHERE CURRENT OF c1;
- } while ( 1 );
-
- cls:
- EXEC SQL CLOSE c1; /* :rk.6:erk. */
- ext:
- if ( SQLCODE != 0 )
- printf( "Error: SQLCODE = %ld.\n", SQLCODE );
-
- EXEC SQL WHENEVER SQLERROR CONTINUE;
- EXEC SQL ROLLBACK;
- printf( "\n\nOn second thought...changes rolled back" );
-
- EXEC SQL CONNECT RESET;
- }