| /******************************************************* |
| ** |
| ** A sample program that demonstrates the use of Static embedded SQL. |
| ** Before compiling this program, be sure you have created a table |
| ** called video and inserted some tuples in it. |
| ** |
| ********************************************************/ |
| #include <stdio.h> |
| |
| /* sqlca: is the sql communications area. All error codes |
| are returned from db2 in that structure which is filled |
| each time an interaction with db2 takes place. |
| */ |
| |
| EXEC SQL INCLUDE SQLCA; /* SQL communication area structure */ |
| |
| EXEC SQL BEGIN DECLARE SECTION; /* declare host variables */ |
| char db_name[8]; /* database name */ |
| char video_title[30]; /* title of the video */ |
| short video_id; /* serial number */ |
| char director[20]; /* director name */ |
| EXEC SQL END DECLARE SECTION; |
| |
| /* These lines are redundant here because the default |
| action is to continue. They just show the kind of |
| errors that could arise and one way to control them. |
| */ |
| |
| EXEC SQL WHENEVER SQLWARNING CONTINUE; /* sqlca.sqlcode > 0 */ |
| EXEC SQL WHENEVER SQLERROR CONTINUE; /* sqlca.sqlcode < 0 */ |
| EXEC SQL WHENEVER NOT FOUND CONTINUE; /* sqlca.sqlcode = 100 */ |
| /* sqlca.sqlcode = 0 (no error) */ |
| |
| void main() { |
| |
| strcpy(db_name, "csc343h"); |
| |
| /* C variables are preceded by a colon when they are passed to DB2 */ |
| |
| EXEC SQL CONNECT TO :db_name; |
| |
| if (sqlca.sqlcode != 0) { |
| printf("Connect failed!: reason %ld\n", sqlca.sqlcode); |
| exit(1); |
| } |
| |
| /* cursor delcaration. Have to declare a cursor each time you |
| want tuples back from db2 |
| */ |
| |
| EXEC SQL DECLARE c1 CURSOR FOR |
| SELECT video_title |
| FROM video; |
| |
| /* you have to open the cursor in order to get tuples back */ |
| |
| EXEC SQL OPEN c1; |
| |
| do { |
| |
| /* fetch tuples from the cursor. This will execute the statement |
| the cursor implements and will return the results */ |
| |
| EXEC SQL FETCH c1 into :video_title; |
| if (SQLCODE != 0) break; /* SQLCODE refers to sqlca.sqlcode */ |
| |
| /* host variables should have ':' prefix when they are used in DB2 commands */ |
| |
| printf("%s\n",video_title); |
| |
| } while (1); |
| EXEC SQL CLOSE c1; |
| EXEC SQL CONNECT RESET; |
| } |