SQL/MX 3.1 Programming Manual for C and COBOL (H06.23+, J06.12+)

Exception Handling and Error Conditions
HP NonStop SQL/MX Release 3.1 Programming Manual for C and COBOL663854-001
13-19
Getting Statement and Condition Items
Examples
/* Set new_jobcode and new_jobdesc host variables. */
EXEC SQL INSERT INTO sales.job (jobcode,jobdesc)
VALUES (:new_jobcode,:new_jobdesc);
...
if (strcmp(SQLSTATE, SQLSTATE_OK) == 0)
{ printf ("\nValues were inserted!");
EXEC SQL COMMIT WORK; }
else get_diagnostics();
...
void get_diagnostics(void) {
EXEC SQL GET DIAGNOSTICS :num = NUMBER;
...
for (i = 1; i <= 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;
...
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);
... /* Process the SQL error. */
}
...
} /* end get_diagnostics */
* Set new-jobcode and new-jobdesc host variables.
...
EXEC SQL INSERT INTO sales.job (jobcode,jobdesc)
VALUES (:new-jobcode,:new-jobdesc)
END-EXEC.
...
IF SQLSTATE = SQLSTATE_OK
DISPLAY "Values were inserted!"
EXEC SQL COMMIT WORK END-EXEC.
ELSE PERFORM 1000-GET-DIAGNOSTICS.
...
STOP RUN.
1000-GET-DIAGNOSTICS.
EXEC SQL GET DIAGNOSTICS
:num = NUMBER ...
END-EXEC.
PERFORM VARYING i FROM 1 BY 1 UNTIL i > num
EXEC SQL GET DIAGNOSTICS EXCEPTION :i
:hv-tabname = TABLE_NAME,
:hv-colname = COLUMN_NAME,
:hv-sqlstate = RETURNED_SQLSTATE,
:hv-sqlcode = SQLCODE,
C
COBOL