home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0210 - 0219 / ibm0210-0219 / ibm0213.tar / ibm0213 / 7025PWA1.ZIP / SAMPLES.ZIP / SQLLIB / SAMPLES / FOR / CURSOR.SQF < prev    next >
Encoding:
Text File  |  1994-02-28  |  1.2 KB  |  49 lines

  1.       PROGRAM cursor
  2.       INCLUDE 'SQLENV.FOR'
  3.       EXEC SQL INCLUDE SQLCA
  4.       EXEC SQL BEGIN DECLARE SECTION
  5.         CHARACTER*10  pname
  6.         INTEGER*2     dept
  7.       EXEC SQL END DECLARE SECTION
  8.       INTEGER*2 RC
  9.  
  10.       WRITE(*,*) 'Sample FORTRAN program: CURSOR'
  11.  
  12.       EXEC SQL CONNECT TO sample IN SHARE MODE
  13.  
  14.       IF ( SQLCODE .NE. 0 ) THEN
  15.         WRITE(*,*) 'Start DB Error:  SQLCODE = ', SQLCODE
  16.         STOP
  17.       ENDIF
  18.  
  19.       EXEC SQL WHENEVER SQLERROR  GO TO 300
  20.       EXEC SQL WHENEVER NOT FOUND GO TO 200  
  21.  
  22.       EXEC SQL DECLARE c1 CURSOR FOR  
  23.      C    SELECT name, dept FROM staff
  24.      C      WHERE job='Mgr' FOR UPDATE OF job
  25.  
  26.       EXEC SQL OPEN c1  
  27.  
  28.   100 CONTINUE
  29.       EXEC SQL FETCH c1 INTO :pname, :dept  
  30.  
  31.       WRITE(*,*) pname , ' in dept. ',
  32.      C           dept, ' will be demoted to Clerk.'
  33.  
  34.       EXEC SQL UPDATE staff SET job = 'Clerk' WHERE CURRENT OF c1 
  35.       GOTO 100
  36.  
  37.   200 EXEC SQL CLOSE c1  
  38.  
  39.   300 IF ( SQLCODE .NE. 0 ) THEN
  40.         WRITE (*,*) 'Error:  SQLCODE = ', SQLCODE
  41.       ENDIF
  42.  
  43.       EXEC SQL WHENEVER SQLERROR CONTINUE
  44.       EXEC SQL ROLLBACK
  45.       WRITE (*,*) 'On second thought...changes rolled back.'
  46.       EXEC SQL CONNECT RESET
  47.       STOP
  48.       END
  49.