#include<stdio.h>
#include<string.h>
EXEC SQL BEGIN DECLARE SECTION;
char SQLSTATE[6];
char SQLMSG[256];
short number;
struct {
long num;
char name[21];
char atta[41];
short year;
} data;
EXEC SQL END DECLARE SECTION;
main(void){
memset( SQLSTATE, '\0' , 6 );
memset( SQLMSG, '\0' , 256 );
EXEC SQL WHENEVER SQLERROR GOTO :CONNECT_ERROR;
EXEC SQL CONNECT TO 'DB01';
EXEC SQL WHENEVER SQLERROR GOTO :STM_ERROR;
EXEC SQL WHENEVER NOT FOUND GOTO :NOT_FOUND_ERROR;
number = 1;
/* データの取得 */
EXEC SQL SELECT COL01, COL02, COL03, COL04 INTO :data
FROM SCH01.TBL01
WHERE NUMBER = :number;
printf( "COL1=%d\n", data.num );
printf( "COL2=%s\n", data.name );
printf( "COL3=%s\n", data.atta );
printf( "COL4=%d\n", data.year );
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL COMMIT WORK;
EXEC SQL DISCONNECT 'DB01';
return 1;
STM_ERROR:
printf( "SQLSTATE %s\n", SQLSTATE );
printf( "SQLMSG %s\n", SQLMSG );
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL COMMIT WORK;
EXEC SQL DISCONNECT 'DB01';
return 1;
NOT_FOUND_ERROR:
printf( "SQLSTATE %s\n", SQLSTATE );
printf( "SQLMSG %s\n", SQLMSG );
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL ROLLBACK WORK;
EXEC SQL DISCONNECT 'DB01';
return 0;
CONNECT_ERROR:
printf( "SQLSTATE %s\n", SQLSTATE );
printf( "SQLMSG %s\n", SQLMSG );
return 1;
}
|