NetBase SQL Shadowing Handbook

NetBase SQL User Exits
____________________________________________________________
ver A0195 QUEST Software, Inc. 3-31
/* IF IT'S NOT AN ERROR, RETURN */
if (sqlca.sqlcode >= 0) /* Not an error */
return;
/* PRINT A HEADER MESSAGE */
sprintf (SQLMsg, "POST_SQL_EXIT_AFTER (%d) ", header->record_type);
if (header->record_type == COMMIT)
strcat (SQLMsg, "COMMIT WORK ");
else
if (header->record_type == BEGIN)
strcat (SQLMsg, "BEGIN WORK ");
else
if (header->record_type == INSERT)
strcat (SQLMsg, "INSERT INTO ");
else
if (header->record_type == DELETE)
strcat (SQLMsg, "DELETE FROM ");
else
if (header->record_type == UPDATE)
strcat (SQLMsg, "UPDATE ");
else
strcat (SQLMsg, "UNKNOWN ");
if (header->record_type >= 24 && /* INSERT, UPDATE or DELETE */
header->record_type <= 26) {
for (l = 0; l < 20 && header->table_name[l] != ' '; l++);
mlen = strlen(SQLMsg);
memcpy (SQLMsg+mlen, header->table_name, l);
mlen += l;
SQLMsg[mlen++] = '/';
for (l = 0; l < 20 && header->owner_name[l] != ' '; l++);
memcpy (SQLMsg+mlen, header->owner_name, l);
SQLMsg[mlen+l] = CHR0;
}
PRINT (SQLMsg, -strlen(SQLMsg), 0);
/* LET SQLEXPLAIN DISPLAY ALL THE ERRORS */
do { /* Print the error */
EXEC SQL SQLEXPLAIN :SQLMsg;
PRINT (SQLMsg, -strlen(SQLMsg), 0);
} while (sqlca.sqlcode != 0);
/* IF BEGIN OR COMMIT, OUR WORK IS DONE */
if (header->record_type == BEGIN ||
header->record_type == COMMIT ||
header->num_columns == 0)
return;