SQL/MX Programming Manual for C and COBOL (G06.24+, H06.03+)
C Sample Programs
HP NonStop SQL/MX Programming Manual for C and COBOL—523627-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)










