📄 asnerror.cpp
字号:
#include "oradb.h"/********************************************************* filename :ASNERROR.pc* function descrpition :insert data into database ASNERRORxxxxxxxxxx * input :struct S_ASNERROR * * output :SQL_OK ( operation sucess) SQL_RET_ERRO (operation failed)* date :2006-05-22**********************************************************/int DbASNERRORInsert(struct S_ASNERROR* pIn, struct S_RESULT* pOut){ char *GtpId=(char *)pIn->GtpId; char *Content=(char *)pIn->Content; int Cause=pIn->Cause; char *GtpName=(char *)pIn->GtpName; char *TableName=(char *)pIn->TableName; char *GsnId = pIn->GsnId; char szMsg[512]; char szSQL[SQLMAX]; char SeqId[LEN_SEQ + 1];/* EXEC SQL BEGIN DECLARE SECTION; EXEC SQL VAR SeqId IS STRING(LEN_SEQ+1); EXEC SQL END DECLARE SECTION; EXEC SQL WHENEVER SQLERROR GOTO sql_error; EXEC SQL SELECT SEQ_ASNERROR.NEXTVAL INTO :SeqId FROM DUAL; */ snprintf(szSQL,SQLMAX,"INSERT INTO %s(" "GTPID,GTPLTABLE,CONTENT," "ERRORCAUSE,DATECREATED,GSNID) VALUES(" "'%s','%s','%s'," "%d,CURDATE(),'%s')", TableName, GtpId,GtpName,Content, Cause, GsnId); #ifdef _DEBUG logOra(sErrLog, szSQL);#endif/* snprintf(szSQL,SQLMAX,"INSERT INTO %s(" "SEQID,GTPID,GTPLTABLE,CONTENT," "ERRORCAUSE,DATECREATED,GSNID) VALUES(" ":x1,:x2,:x3,:x4,:x5," "SYSDATE,:x6)", TableName); */ Lock(); int res = mysql_real_query(myConnect, szSQL, strlen(szSQL)); if(res != 0) { Unlock(); logOra(sErrLog, "%d %s\n", mysql_errno(myConnect), mysql_error(myConnect)); return -1; } Unlock(); return 0;}/************************************************************************ filename :ASNERROR.pc* function descrpition :get records from database OMCDRxxxxxxxxxx * input :Tablename,Condition; * output :ASNERROR is record set to store what we want, nItems is counter of those record set,S_RESULT is flag to tell us about operation is sucessful or not;* date :2006-05-22*************************************************************************************/int DbASNERRORSelect(char* pInSzTableName, char* pWhere, struct S_ASNERROR** pOutCDR, int *nItems, struct S_RESULT* pOut){ short ind[7]; int RecordType; char GtpId[LEN_SEQ + 1]; char GtpName[LEN_TABLENAME + 1]; char SeqId[LEN_SEQ + 1]; char Content[LEN_CONTENT + 1]; int Cause; char DateCreated[LEN_DATETIME + 1]; char GsnId[10 + 1]; char TableName[LEN_TABLENAME + 1]; /* EXEC SQL BEGIN DECLARE SECTION; EXEC SQL VAR GtpId IS STRING(LEN_SEQ + 1); EXEC SQL VAR GtpName IS STRING(LEN_TABLENAME + 1); EXEC SQL VAR SeqId IS STRING(LEN_SEQ + 1); EXEC SQL VAR Content IS STRING(LEN_CONTENT + 1); EXEC SQL VAR DateCreated IS STRING(LEN_DATETIME + 1); EXEC SQL VAR GsnId IS STRING(10 + 1); EXEC SQL END DECLARE SECTION; struct S_ASNERROR *pASNERROR=*pOutCDR ; int nNumber = 0; char szMsg[512]; char szSQL[SQLMAX]; char szSQL2[SQLMAX]; struct S_ASNERROR* p2; int j; char * sz ; if(pASNERROR != NULL) { return -1; } snprintf(szSQL2, SQLMAX, "SELECT COUNT(*) FROM %s WHERE %s", pInSzTableName,pWhere); snprintf(szSQL,SQLMAX,"SELECT ""SEQID,GTPID,GTPLTABLE,CONTENT,ERRORCAUSE,DATECREATED,""GSNID FROM %s WHERE %s",pInSzTableName,pWhere); #ifdef _DEBUG logOra(sErrLog, szSQL);#endif Lock(); EXEC SQL WHENEVER SQLERROR GOTO sql_error2; EXEC SQL PREPARE stat2 FROM :szSQL2; EXEC SQL DECLARE ASNERROR2 CURSOR FOR stat2; EXEC SQL OPEN ASNERROR2; EXEC SQL WHENEVER NOT FOUND goto notfound2; EXEC SQL FETCH ASNERROR2 INTO :nNumber; EXEC SQL CLOSE ASNERROR2; sz = malloc(SIZE_S_ASNERROR*nNumber); memset(sz, 0, SIZE_S_ASNERROR*nNumber); EXEC SQL WHENEVER SQLERROR GOTO sql_error; EXEC SQL PREPARE stat FROM :szSQL; EXEC SQL DECLARE ASNERROR1 CURSOR FOR stat; EXEC SQL OPEN ASNERROR1; EXEC SQL WHENEVER NOT FOUND goto notfound; #ifdef _DEBUG logOra(sErrLog, "CURSOR...");#endif for(j=0;j<nNumber;j++) { EXEC SQL FETCH ASNERROR1 INTO :SeqId:ind[0], :GtpId:ind[1],:GtpName:ind[2],:Content:ind[3], :Cause:ind[4],:DateCreated:ind[5],:GsnId:ind[6]; p2 = (struct S_ASNERROR* )&sz[SIZE_S_ASNERROR*j]; memcpy(p2->SeqId,SeqId,LEN_SEQ); memcpy(p2->GtpId,GtpId,LEN_SEQ); memcpy(p2->GtpName,GtpName,LEN_TABLENAME); memcpy(p2->Content,Content,4000); p2->Cause=Cause; memcpy(p2->DateCreated,DateCreated,LEN_DATETIME); memcpy(p2->GsnId,GsnId,11); } * pOutCDR = (struct S_ASNERROR* )sz; * nItems = nNumber; notfound: EXEC SQL CLOSE ASNERROR1; Unlock(); pOut->nFlag = SQL_OK; return 0;notfound2: EXEC SQL CLOSE ASNERROR2; Unlock(); return 0;sql_error: EXEC SQL CLOSE ASNERROR1; Unlock(); pOut->nFlag = SQL_RET_ERROR;#ifdef LOG_ERROR snprintf(szMsg, 512, "ORA:DbASNERRORSelect: %.70s", sqlca.sqlerrm.sqlerrmc); logOra(sErrLog, szMsg);#endif EXEC SQL WHENEVER SQLERROR CONTINUE; onError(); return 1;sql_error2: EXEC SQL CLOSE ASNERROR2; Unlock(); pOut->nFlag = SQL_RET_ERROR;#ifdef LOG_ERROR snprintf(szMsg, 512, "ORA:DbASNERRORSelect: %.70s", sqlca.sqlerrm.sqlerrmc); logOra(sErrLog, szMsg);#endif EXEC SQL WHENEVER SQLERROR CONTINUE; onError();*/ return 1;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -