SQL/MX Programming Manual for C and COBOL (G06.24+, H06.03+)
Dynamic SQL With Descriptor Areas
HP NonStop SQL/MX Programming Manual for C and COBOL—523627-004
10-11
Consideration—Retrieving Multiple Values From a
Large Buffer
 delete hv_emp_num;
 delete hv_emp_name;
 EXEC SQL CLOSE :hv_curspec;
 EXEC SQL DEALLOCATE DESCRIPTOR 'out_sqlda';
 EXEC SQL DEALLOCATE PREPARE :hv_sqlstmt;
 return 0;
 } /* main() */
 void sql_error()
{
 EXEC SQL BEGIN DECLARE SECTION;
 char SQLSTATE[6];
 long hv_num;
 unsigned short hv_i;
 char hv_sqlstate[6];
 VARCHAR hv_tabname[129];
 VARCHAR hv_colname[129];
 VARCHAR hv_msgtxt[129];
 EXEC SQL END DECLARE SECTION;
 printf("=== EXEC SQL WHENEVER SQLERROR CONTINUE ===\n");
 EXEC SQL GET DIAGNOSTICS :hv_num = NUMBER;
 for (hv_i=1; hv_i <= hv_num; hv_i++){
 EXEC SQL GET DIAGNOSTICS EXCEPTION :hv_i
 :hv_tabname = TABLE_NAME,
 :hv_colname = COLUMN_NAME,
 :hv_sqlstate = RETURNED_SQLSTATE,
 :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("message : %s\n", hv_msgtxt);
 } /* for */
 } /* sql_error() */
Example 10-1. C VARIABLE_POINTER Example (page3of3)
C










