#include #include #include EXEC SQL INCLUDE SQLCA; EXEC SQL BEGIN DECLARE SECTION; short sid; char first[21]; char last[21]; sqlint32 sum_points; EXEC SQL END DECLARE SECTION; int main(void) { EXEC SQL CONNECT TO homework; EXEC SQL WHENEVER SQLERROR GOTO error; EXEC SQL DECLARE c1 CURSOR FOR SELECT s.SID, s.FIRST, s.LAST, SUM(r.POINTS) FROM STUDENTS s, RESULTS r WHERE s.SID = r.SID GROUP BY s.SID, s.FIRST, s.LAST; EXEC SQL OPEN c1; EXEC SQL WHENEVER NOT FOUND GOTO done; while (1) { EXEC SQL FETCH c1 INTO :sid, :first, :last, :sum_points; printf("#%d %10s %10s\t %d points\n", sid, first, last, sum_points); } done: EXEC SQL CLOSE c1; EXEC SQL COMMIT; return 0; error: EXEC SQL WHENEVER SQLERROR CONTINUE; printf ("DB2 error (%d, %s)\n", sqlca.sqlcode, sqlca.sqlstate); if (sqlca.sqlerrml) printf("\t%.*s\n", sqlca.sqlerrml, sqlca.sqlerrmc); EXEC SQL ROLLBACK; return 1; }