SQL/MX Programming Manual for C and COBOL (G06.24+, H06.03+)

C Sample Programs
HP NonStop SQL/MX Programming Manual for C and COBOL523627-004
A-14
Using SQL Descriptor Areas Without DESCRIBE
if (strcmp(SQLSTATE, SQLSTATE_NODATA) == 0)
printf("\nNo rows with Jobcode %d and Last Name %s.\n",
in_jobcode, in_last_name);
else if (strcmp(SQLSTATE, SQLSTATE_OK) == 0) {
printf("\nThe update is committed.\n");
EXEC SQL COMMIT WORK; /* Commit the changes */
}
else {
printf("\nThe update is rolled back.\n");
EXEC SQL ROLLBACK WORK; /* Roll back the changes */
}
/* Deallocate the prepared statement and */
/* the SQL descriptor area. */
EXEC SQL DEALLOCATE PREPARE sqlstmt;
EXEC SQL DEALLOCATE DESCRIPTOR 'in_sqlda';
return 0;
} /* end main */
void sql_error() {
EXEC SQL BEGIN DECLARE SECTION;
char SQLSTATE[6];
long hv_num;
long i;
char hv_sqlstate[6];
long hv_sqlcode;
VARCHAR hv_tabname[129];
VARCHAR hv_colname[129];
VARCHAR hv_msgtxt[129];
EXEC SQL END DECLARE SECTION;
EXEC SQL GET DIAGNOSTICS
:hv_num = NUMBER;
for (i = 1; i <= hv_num; i++) {
EXEC SQL GET DIAGNOSTICS EXCEPTION :i
:hv_tabname = TABLE_NAME,
:hv_colname = COLUMN_NAME,
:hv_sqlstate = RETURNED_SQLSTATE,
:hv_sqlcode = SQLCODE,
:hv_msgtxt = MESSAGE_TEXT;
hv_tabname[128]='\0'; hv_colname[128]='\0';
hv_sqlstate[5]='\0'; hv_msgtxt[128]='\0';
printf("Table : %s\n", hv_tabname);
printf("Column : %s\n", hv_colname);
printf("SQLSTATE: %s\n", hv_sqlstate);
printf("SQLCODE : %d\n", hv_sqlcode);
printf("Message : %s\n", hv_msgtxt);
}
} /* end sql_error */
Example A-5. Using SQL Descriptor Areas Without DESCRIBE (page3of3)