int odxa_errhandler(void) { char buf[257]=""; char message[513]=" ::[ , 00000000]: "; long error_no = 0; char error_text[257]; SYSTIME time_now; i4 len; // EXEC SQL INQUIRE_SQL(:error_no = ERRORNO,:error_text = ERRORTEXT); IILQisInqSqlio((short *)0,1,30,4,&error_no,2); IILQisInqSqlio((short *)0,1,32,256,error_text,63); CVlx((u_i4)error_no, buf); STprintf(message, ERx(" ::[%-16s, %s]: "), szFuncName, buf); TMnow( &time_now ); TMstr( &time_now, buf ); STcat(message, buf); STcat(message, " MS DTC Ingres XA Interface: "); if (STequal(szFuncName,"xa_open")) /* dump out xa_open's xa_info string */ { len = (i4)STlength(message); STcat(message, errlog_xa_info); WriteDTCerrToEventLog(S_OK, message); message[len] = '\0'; /* chop back to the message header */ } STcat(message, error_text); WriteDTCerrToEventLog(S_OK, message); return 0; }
char *INGerrorMessage(const INGconn *dbconn) { /* # line 830 "myingres.sc" */ int sess_id; char errbuf[256]; /* # line 833 "myingres.sc" */ if (dbconn != NULL) { /* * Switch to the correct default session for this thread. */ sess_id = dbconn->session_id; /* # line 840 "myingres.sc" */ /* set_sql */ { IILQssSetSqlio(11,(short *)0,1,30,sizeof(sess_id),&sess_id); } /* # line 842 "myingres.sc" */ /* inquire_ingres */ { IILQisInqSqlio((short *)0,1,32,255,errbuf,63); } /* # line 843 "myingres.sc" */ /* host code */ bstrncpy(dbconn->msg, errbuf, sizeof(dbconn->msg)); /* * Switch to no default session for this thread. */ /* # line 848 "myingres.sc" */ /* set_sql */ { IILQssSetSqlio(11,(short *)0,1,30,sizeof(-97),(void *)IILQint(-97)); } /* # line 849 "myingres.sc" */ /* host code */ } return dbconn->msg; }
int INGexec(INGconn *dbconn, const char *query, bool explicit_commit) { /* # line 522 "myingres.sc" */ int sess_id; int rowcount; int errors; char *stmt; /* # line 527 "myingres.sc" */ rowcount = -1; stmt = bstrdup(query); /* # line 534 "myingres.sc" */ /* host code */ /* * Switch to the correct default session for this thread. */ sess_id = dbconn->session_id; /* # line 538 "myingres.sc" */ /* set_sql */ { IILQssSetSqlio(11,(short *)0,1,30,sizeof(sess_id),&sess_id); } /* # line 540 "myingres.sc" */ /* execute */ { IIsqInit(&sqlca); IIsqExImmed(stmt); IIsyncup((char *)0,0); if (sqlca.sqlcode < 0) goto bail_out; } /* # line 541 "myingres.sc" */ /* inquire_ingres */ { IILQisInqSqlio((short *)0,1,30,sizeof(rowcount),&rowcount,8); } /* # line 543 "myingres.sc" */ /* host code */ /* * See if the negative rowcount is due to errors. */ if (rowcount < 0) { /* # line 547 "myingres.sc" */ /* inquire_ingres */ { IILQisInqSqlio((short *)0,1,30,sizeof(errors),&errors,0); } /* # line 549 "myingres.sc" */ /* host code */ /* * If the number of errors is 0 we got a negative rowcount * because the statement we executed doesn't give a rowcount back. * Lets pretend we have a rowcount of 1 then. */ if (errors == 0) { rowcount = 1; } } /* # line 561 "myingres.sc" */ /* host code */ bail_out: /* * If explicit_commit is set we commit our work now. */ if (explicit_commit) { /* # line 566 "myingres.sc" */ /* commit */ { IIsqInit(&sqlca); IIxact(3); } /* # line 567 "myingres.sc" */ /* host code */ } /* * Switch to no default session for this thread. */ /* # line 572 "myingres.sc" */ /* set_sql */ { IILQssSetSqlio(11,(short *)0,1,30,sizeof(-97),(void *)IILQint(-97)); } /* # line 573 "myingres.sc" */ /* host code */ free(stmt); return rowcount; }
void IIpLQisInqSqlio(i2 *indaddr,i4 isvar,i4 type,i4 len,II_LQTYPE_PTR addr, i4 attrib) { IILQisInqSqlio(indaddr,isvar,type,len,addr,attrib); }