A Complete Cursor Example
From InterBase
Go Up to Selecting Multiple Rows
The following program declares a cursor, opens the cursor, and then loops through the cursor’s active set, fetching and printing values. The program closes the cursor when all processing is finished or an error occurs.
#include <stdio.h> EXEC SQL BEGIN DECLARE SECTION; char deptname[26]; char lname[16]; char fname[11]; EXEC SQL END DECLARE SECTION; main () { EXEC SQL WHENEVER SQLERROR GO TO abend; EXEC SQL DECLARE DEPT_EMP CURSOR FOR SELECT DEPARTMENT, LAST_NAME, FIRST_NAME FROM DEPARTMENT D, EMPLOYEE E WHERE D.DEPT_NO = E.DEPT_NO ORDER BY DEPARTMENT, LAST_NAME, FIRST_NAME; EXEC SQL OPEN DEPT_EMP; EXEC SQL FETCH DEPT_EMP INTO :deptname, :lname, :fname; while (!SQLCODE) { printf("%s %s works in the %s department.\n",fname, lname, deptname); EXEC SQL FETCH DEPT_EMP INTO :deptname, :lname, :fname; } EXEC SQL CLOSE DEPT_EMP; exit(); abend: if (SQLCODE) { isc_print_sqlerror(); EXEC SQL ROLLBACK; EXEC SQL CLOSE_DEPT_EMP; EXEC SQL DISCONNECT ALL; exit(1) } else { EXEC SQL COMMIT; EXEC SQL DISCONNECT ALL; exit() } }