?? omtcdr.cpp
字號:
#include "oradb.h"/********************************************************* filename :OMTCDR.pc* function descrpition :insert data into database OMTCDRxxxxxxxxxx * input :struct S_OMTCDR * * output :SQL_OK ( operation sucess) SQL_RET_ERRO (operation failed)* date :2006-05-22**********************************************************/int DbOMTCDRInsert(struct S_OMTCDR* pIn, struct S_RESULT* pOut){/* get info */ char *GtpName=(char *)pIn->GtpName; char *GtpId=(char *)pIn->GtpId; int RecordType=pIn->RecordType; int FlagRead = pIn->FlagRead; int FlagRepeat=pIn->FlagRepeat; int FlagR499=pIn->FlagR499; char *ServedIMSI=(char *)pIn->ServedIMSI; char *ServedIMEI=(char *)pIn->ServedIMEI; char *ServedMSISDN=(char *)pIn->ServedMSISDN; char *MSNetworkCapability=(char *)pIn->MSNetworkCapability; char *RoutingAreaCode=(char *)pIn->RoutingAreaCode; char *LocationAreaCode=(char *)pIn->LocationAreaCode; char *CellIdentity=(char *)pIn->CellIdentity; char *ServiceCenter=(char *)pIn->ServiceCenter; char *RecordingEntity = (char*)pIn->RecordingEntity; char *EventStampTime=(char *)pIn->EventStampTime; /*char*/int SystemType=pIn->SystemType;/* char* MessageReference = pIn->MessageReference;*/ /*char*/int SMSResult=pIn->SMSResult; char *NodeID=(char *)pIn->NodeID; char *ChargingCharacteristics=(char *)pIn->ChargingCharacteristics; char *LocalRecordSequeceNumnber=(char *)pIn->LocalRecordSequeceNumnber; char *GsnId=(char *)pIn->GsnId; char szMsg[512]; char szSQL[SQLMAX]; char SeqId[LEN_SEQ + 1]; char *TableName=(char *)pIn->TableName; char *RecordExtensions = pIn->RecordExtensions;#ifdef EXT10mt int ChargingCharacterSelectionMode = pIn->ChargingCharacterSelectionMode;#endif /* peer ip */ char *GsnIpAddr = pIn->GsnIpAddr; /* 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_OMTCDR.NEXTVAL INTO :SeqId FROM DUAL; /* PART 2 INSERT STATEMENT *//*snprintf(szSQL,SQLMAX,"INSERT INTO %s (""SEQID,GTPID,GTPLTABLE,FLAGR499," "SERVEDIMSI,SERVEDIMEI,SERVEDMSISDN,MSNNETWORKCAPABILITY," "SERVICECENTER,ROUTINGAREACODE,LOCATIONAREACODE,EVENTSTAMPTIME," "SMSRESULT,NODEID,LOCALRECORDSEQUECENUMBER,CHARGINGCHARACTERISTICS," "SYSTEMTYPE,DATECREATED,GSNID,FLAGREAD,RECORDINGENTITY) VALUES(" "'%s','%s','%s',%d," "'%s','%s','%s','%s'," "'%s','%s','%s',TO_DATE('%s','YYYYMMDDHH24MISS')," "%d ,'%s','%s','%s'," "%d ,SYSDATE,'%s',%d,""'%s')",TableName,SeqId, GtpId,GtpName,FlagR499, ServedIMSI,ServedIMEI,ServedMSISDN,MSNetworkCapability, ServiceCenter,RoutingAreaCode,LocationAreaCode,EventStampTime,SMSResult,NodeID,LocalRecordSequeceNumnber,ChargingCharacteristics,SystemType,GsnId,FlagRead,RecordingEntity); #ifdef _DEBUG logOra(sErrLog, szSQL);#endif*/snprintf(szSQL,SQLMAX,"INSERT INTO %s (""GTPID,GTPLTABLE,FLAGR499," "FLAGREPEAT," "SERVEDIMSI,SERVEDIMEI,SERVEDMSISDN,MSNNETWORKCAPABILITY," "SERVICECENTER,ROUTINGAREACODE,LOCATIONAREACODE,EVENTSTAMPTIME," "SMSRESULT,NODEID,LOCALRECORDSEQUECENUMBER,CHARGINGCHARACTERISTICS," "SYSTEMTYPE,DATECREATED,GSNID,FLAGREAD,RECORDINGENTITY"#ifdef EXT10mt",RECORDEXTENSIONS"",CHARGINGCHARACTERSELECTIONMODE"",CELLIDENTITY"#endif",GSNIPADDR"") VALUES(" "%s,'%s',%d," "%d," "'%s','%s','%s','%s'," "'%s','%s','%s','%s'," "%d ,'%s',%s,'%s'," "%d ,NOW(),%s,%d,'%s'"#ifdef EXT10mt",'%s'"",%d"",'%s'"#endif",'%s'"")",TableName,GtpId,GtpName,FlagR499,FlagRepeat, ServedIMSI,ServedIMEI,ServedMSISDN,MSNetworkCapability, ServiceCenter,RoutingAreaCode,LocationAreaCode,EventStampTime,SMSResult,NodeID,LocalRecordSequeceNumnber,ChargingCharacteristics,SystemType,GsnId,FlagRead,RecordingEntity#ifdef EXT10mt,RecordExtensions,ChargingCharacterSelectionMode,CellIdentity#endif,GsnIpAddr); #ifdef _DEBUG logOra(sErrLog, szSQL);#endif 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();//Lock();/* EXEC SQL EXECUTE DECLARE BEGIN EXECUTE IMMEDIATE :szSQL using:SeqId,:GtpId,:GtpName,:FlagR499, :FlagRepeat, :ServedIMSI,:ServedIMEI,:ServedMSISDN,:MSNetworkCapability, :ServiceCenter,:RoutingAreaCode,:LocationAreaCode,:EventStampTime,:SMSResult,:NodeID,:LocalRecordSequeceNumnber,:ChargingCharacteristics,:SystemType,:GsnId,:FlagRead,:RecordingEntity#ifdef EXT10mt ,:RecordExtensions ,:ChargingCharacterSelectionMode ,:CellIdentity#endif,:GsnIpAddr; COMMIT; END; END-EXEC; Unlock(); pOut->nFlag = SQL_OK; snprintf(pOut->SeqId, LEN_SEQ+1, "%s", SeqId); return 0;sql_error: Unlock(); pOut->nFlag = SQL_RET_ERROR;#ifdef LOG_ERROR snprintf(szMsg, 512, "ORA:DbOMTCDRInsert: %.70s", sqlca.sqlerrm.sqlerrmc); logOra(sErrLog, szMsg);#endif EXEC SQL WHENEVER SQLERROR CONTINUE; onError();notfound: */ Unlock(); return 1;}/************************************************************************ filename :OMTCDR.pc* function descrpition :get records from database OMCDRxxxxxxxxxx * input :Tablename,Condition; * output :S_OMTCDR 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 DbOMTCDRSelect(char* pInSzTableName, char* pWhere, struct S_OMTCDR** pOutCDR, int *nItems, struct S_RESULT* pOut){ short ind[59]; short id[2]; int RecordType; char SeqId[LEN_SEQ + 1]; char GtpName[LEN_TABLENAME + 1]; char GtpId[LEN_SEQ + 1]; int FlagRead; int FlagRepeat; int FlagR499; char ServedIMSI[17]; char ServedIMEI[17]; char ServedMSISDN[LEN_ServedMSISDN+1]; char MSNetworkCapability[LEN_MSNetworkCapability+1]; char RoutingAreaCode[9]; char LocationAreaCode[17]; char CellIdentity[25]; char ServiceCenter[21]; char RecordingEntity[21]; char EventStampTime[LEN_DATETIME + 1]; int SystemType;/* char SystemType;/* char MessageReference[256];*//* char SMSResult;*/ int SMSResult; char NodeID[21]; char ChargingCharacteristics[LEN_ChargingCharacteristics+1]; char LocalRecordSequeceNumnber[11]; char DateCreated[LEN_DATETIME + 1]; char GsnId[11]; char RecordExtensions[LEN_RecordExtensions+1]; int ChargingCharacterSelectionMode; char GsnIpAddr[LEN_IpAddr+1];/* EXEC SQL BEGIN DECLARE SECTION; EXEC SQL VAR GsnIpAddr IS STRING(LEN_IpAddr + 1); EXEC SQL VAR RecordExtensions IS STRING(LEN_RecordExtensions + 1); EXEC SQL VAR SeqId IS STRING(LEN_SEQ + 1); EXEC SQL VAR GtpName IS STRING(LEN_TABLENAME + 1); EXEC SQL VAR GtpId IS STRING(LEN_SEQ + 1); EXEC SQL VAR ServedIMSI IS STRING(17); EXEC SQL VAR ServedIMEI IS STRING(17); EXEC SQL VAR ServedMSISDN IS STRING(LEN_ServedMSISDN+1); EXEC SQL VAR MSNetworkCapability IS STRING(LEN_MSNetworkCapability+1); EXEC SQL VAR RoutingAreaCode IS STRING(9); EXEC SQL VAR LocationAreaCode IS STRING(17); EXEC SQL VAR CellIdentity IS STRING(25); EXEC SQL VAR ServiceCenter IS STRING(21); EXEC SQL VAR RecordingEntity IS STRING(21); EXEC SQL VAR EventStampTime IS STRING(LEN_DATETIME + 1); EXEC SQL VAR NodeID IS STRING(21); EXEC SQL VAR ChargingCharacteristics IS STRING(LEN_ChargingCharacteristics+1); EXEC SQL VAR LocalRecordSequeceNumnber IS STRING(11); EXEC SQL VAR DateCreated IS STRING(LEN_DATETIME + 1); EXEC SQL VAR GsnId IS STRING(11); EXEC SQL END DECLARE SECTION; /* result */ struct S_OMTCDR *pOMTCDR=*pOutCDR ; int nNumber = 0; char szMsg[512]; char szSQL[SQLMAX]; char szSQL2[SQLMAX]; char szSQL3[SQLMAX]; struct S_OMTCDR* p2; int j; char * sz ; *nItems=0; if(pOMTCDR != NULL) { return -1; } snprintf(szSQL2, SQLMAX, "SELECT COUNT(*) FROM %s WHERE %s", pInSzTableName,pWhere); snprintf(szSQL,SQLMAX,"SELECT ""SEQID,GTPID,GTPLTABLE,FLAGR499," "SERVEDIMSI,SERVEDIMEI,SERVEDMSISDN,MSNNETWORKCAPABILITY," "SERVICECENTER,ROUTINGAREACODE,LOCATIONAREACODE,TO_CHAR(EVENTSTAMPTIME,'YYYYMMDDHH24MISS'),""SMSRESULT,NODEID,LOCALRECORDSEQUECENUMBER,CHARGINGCHARACTERISTICS," "SYSTEMTYPE,GSNID,FLAGREAD,RECORDINGENTITY"#ifdef EXT10mt",RECORDEXTENSIONS"",CHARGINGCHARACTERSELECTIONMODE"",CELLIDENTITY"#endif",GSNIPADDR"" FROM %s WHERE %s",pInSzTableName,pWhere); #ifdef _DEBUG#ifdef LOG_SELECT logOra(sErrLog, szSQL);#endif#endif/* Lock(); EXEC SQL WHENEVER SQLERROR GOTO sql_error2; EXEC SQL PREPARE stat2 FROM :szSQL2; EXEC SQL DECLARE OMTCDR2 CURSOR FOR stat2; EXEC SQL OPEN OMTCDR2; EXEC SQL WHENEVER NOT FOUND goto notfound2; EXEC SQL FETCH OMTCDR2 INTO :nNumber; EXEC SQL CLOSE OMTCDR2; if(nNumber <= 0) { Unlock(); * nItems = 0; return 0; } sz = malloc(SIZE_S_OMTCDR*nNumber); memset(sz, 0, SIZE_S_OMTCDR*nNumber); EXEC SQL WHENEVER SQLERROR GOTO sql_error; EXEC SQL PREPARE stat FROM :szSQL; EXEC SQL DECLARE OMTCDR1 CURSOR FOR stat; EXEC SQL OPEN OMTCDR1; EXEC SQL WHENEVER NOT FOUND goto notfound; #ifdef _DEBUG logOra(sErrLog, "CURSOR...");#endif for(j=0;j<nNumber;j++) { EXEC SQL FETCH OMTCDR1 INTO:SeqId:ind[0], :GtpId:ind[1],:GtpName:ind[2],:FlagR499:ind[3], :ServedIMSI:ind[4],:ServedIMEI:ind[5],:ServedMSISDN:ind[6],:MSNetworkCapability:ind[7], :ServiceCenter:ind[8],:RoutingAreaCode:ind[9],:LocationAreaCode:ind[10],:EventStampTime:ind[11],:SMSResult:ind[12],:NodeID:ind[13],:LocalRecordSequeceNumnber:ind[14],:ChargingCharacteristics:ind[15],:SystemType:ind[16],:GsnId:ind[17],:FlagRead:ind[33],:RecordingEntity:ind[33]#ifdef EXT10mt,:RecordExtensions:id[1],:ChargingCharacterSelectionMode:id[0],:CellIdentity:id[1]#endif ,:GsnIpAddr:id[1]; p2 = (struct S_OMTCDR* )&sz[SIZE_S_OMTCDR*j]; p2->RecordType=RecordType; memcpy(p2->SeqId,SeqId,LEN_SEQ); memcpy(p2->GtpId,GtpId,LEN_SEQ); memcpy(p2->GtpName,GtpName,LEN_TABLENAME); p2->FlagR499=FlagR499; memcpy(p2->ServedIMSI,ServedIMSI,LEN_ServedIMSI); memcpy(p2->ServedIMEI,ServedIMEI,LEN_ServedIMSI); memcpy(p2->ServedMSISDN,ServedMSISDN,LEN_ServedMSISDN); memcpy(p2->MSNetworkCapability,MSNetworkCapability,LEN_MSNetworkCapability); memcpy(p2->ServiceCenter,ServiceCenter,21); memcpy(p2->RoutingAreaCode,RoutingAreaCode,9); memcpy(p2->LocationAreaCode,LocationAreaCode,17); memcpy(p2->EventStampTime,EventStampTime,LEN_DATETIME); p2->SMSResult=SMSResult; memcpy(p2->NodeID,NodeID,21); memcpy(p2->LocalRecordSequeceNumnber,LocalRecordSequeceNumnber,11); memcpy(p2->ChargingCharacteristics,ChargingCharacteristics,LEN_ChargingCharacteristics); p2->SystemType=SystemType; memcpy(p2->GsnId,GsnId,11); p2->FlagRead=FlagRead; memcpy(p2->RecordingEntity,RecordingEntity,20);#ifdef EXT10mtmemcpy(p2->RecordExtensions,RecordExtensions,LEN_RecordExtensions);p2->ChargingCharacterSelectionMode=ChargingCharacterSelectionMode;memcpy(p2->CellIdentity,CellIdentity,24);#endif memcpy(p2->GsnIpAddr,GsnIpAddr,LEN_IpAddr);printf("!%s!\n", p2->GsnIpAddr); memcpy(p2->TableName, pInSzTableName, LEN_TABLENAME); snprintf(szSQL3, SQLMAX, "UPDATE %s SET FLAGREAD=1 WHERE SEQID='%s'", p2->TableName, p2->SeqId); EXEC SQL EXECUTE IMMEDIATE :szSQL3; logOra(sErrLog, szSQL3); } * pOutCDR = (struct S_OMTCDR* )sz; * nItems = nNumber; EXEC SQL CLOSE OMTCDR1; if(nNumber > 0) { EXEC SQL COMMIT WORK; } Unlock(); pOut->nFlag = SQL_OK; return 0;notfound: EXEC SQL CLOSE OMTCDR1; Unlock(); pOut->nFlag = SQL_OK; return 0;notfound2: EXEC SQL CLOSE OMTCDR2; Unlock(); return 0;sql_error: EXEC SQL CLOSE OMTCDR1; Unlock(); pOut->nFlag = SQL_RET_ERROR;#ifdef LOG_ERROR snprintf(szMsg, 512, "ORA:DbOMTCDRSelect: %.70s", sqlca.sqlerrm.sqlerrmc); logOra(sErrLog, szMsg);#endif EXEC SQL WHENEVER SQLERROR CONTINUE; onError(); return 1;sql_error2: EXEC SQL CLOSE OMTCDR2; Unlock(); pOut->nFlag = SQL_RET_ERROR;#ifdef LOG_ERROR snprintf(szMsg, 512, "ORA:DbOMTCDRSelect: %.70s", sqlca.sqlerrm.sqlerrmc); logOra(sErrLog, szMsg);#endif EXEC SQL WHENEVER SQLERROR CONTINUE; onError();*/ return 2;}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -