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-4
Ensuring Data Consistency
Ensuring Data Consistency
Example A-2 executes the steps shown in Figure 14-1 on page 14-1.
Example A-2. Using TMF to Ensure Data Consistency
/* ---------------------------------------------------------
Description: Using TMF to ensure data consistency
Statements: SET TRANSACTION
BEGIN WORK
Searched UPDATE
COMMIT WORK
ROLLBACK WORK
WHENEVER
------------------------------------------------------------ */
#include <stdio.h>
#include <string.h>
EXEC SQL MODULE EXF91M NAMES ARE ISO88591;
int main()
{
char SQLSTATE_OK[6]="00000";
EXEC SQL BEGIN DECLARE SECTION;
char SQLSTATE[6];
EXEC SQL END DECLARE SECTION;
SQLSTATE[5]='\0';
SQLSTATE_OK[5]='\0';
printf("\n\nThis example begins and ends a transaction. \n\n");
EXEC SQL WHENEVER SQLERROR GOTO end_prog;
EXEC SQL DECLARE CATALOG 'samdbcat';
EXEC SQL DECLARE SCHEMA 'sales';
/* First, set the attributes for the transaction. */
EXEC SQL SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
EXEC SQL BEGIN WORK; /* Start a transaction. */
/* Update the database by setting customer credit. */
EXEC SQL UPDATE customer SET CREDIT = 'CR';
end_prog:
EXEC SQL WHENEVER SQLERROR CONTINUE;
if (strcmp(SQLSTATE, SQLSTATE_OK) == 0) {
printf("\nThe update is committed. \n\n");
EXEC SQL COMMIT WORK; /* Commit the changes. */
}
else {
printf("The update is rolled back. \n\n");
printf("SQLSTATE: %s \n\n", SQLSTATE);
EXEC SQL ROLLBACK WORK; /* Roll back the changes. */
}
return 0;
}