SQL/MX Queuing and Publish/Subscribe Services
Embedded SQL Examples
HP NonStop SQL/MX Queuing and Publish/Subscribe Services—523734-002
3-11
Managing Transactions With the Stream Timeout
Attribute
EXEC SQL MODULE cat.sch.SHORTTRANS NAMES ARE ISO88591;
int main(int argc, char *argv[])
{
 EXEC SQL BEGIN DECLARE SECTION;
 int hv_a;
 long SQLCODE;
 EXEC SQL END DECLARE SECTION;
 EXEC SQL WHENEVER SQLERROR CALL handle_error_or_timeout;
 for (;;)
 {
 exec sql begin work;
 exec sql control query default STREAM_TIMEOUT '3000';
 exec sql select a into :hv_a 
 from (delete from stream(t) 
 where a >= 0
 for skip conflict access) as t;
 exec sql commit;
 if (timed_out == TRUE)
 timed_out = FALSE;
 else
 printf("%d dequeued.\n", hv_a);
 }
 assert(0); /* Loop above should never end */
 return 0;
}
void handle_error_or_timeout() {
 EXEC SQL BEGIN DECLARE SECTION;
 long i,num, hv_cond_num,hv_sqlcode;
 char hv_sqlstate[6];
 char hv_table_name[129];
 char hv_column_name[129];
 char hv_message_text[256];
 long SQLCODE;
 EXEC SQL END DECLARE SECTION;
 EXEC SQL WHENEVER SQLERROR GOTO err_exit;
 EXEC SQL GET DIAGNOSTICS :num = NUMBER;
 for (i=1;i<=num;i++) {
 EXEC SQL GET DIAGNOSTICS EXCEPTION :i
 :hv_cond_num = CONDITION_NUMBER,
 :hv_sqlstate = RETURNED_SQLSTATE,
 :hv_table_name = TABLE_NAME,
 :hv_column_name = COLUMN_NAME,
 :hv_message_text = MESSAGE_TEXT,










