?? cgcdr.cpp
字號:
#include "oradb.h"/* NOTE: Sequece Id*/int DbCGCDRInsert(struct S_CGCDR* p, struct S_RESULT* pOut){ char szMsg[512]; char* TableName = p->TableName; char* SeqId = p->SeqId;/* char *GtpName=(char *)p->GtpName; char *GtpId=(char *)p->GtpId;*/ int FlagRead = p->FlagRead; /*1*/ int FlagRepeat = p->FlagRepeat; int FlagR499 = p->FlagR499; int NetworkInitiatedPDPContext = p->NetworkInitiatedPDPContext; /*2*/ char *ServedIMSI = p->ServedIMSI; char *ServedMSISDN = p->ServedMSISDN; char *SGSNIPAddress = p->SGSNIPAddress; /*3*/ char* ChargingID = p->ChargingID; char *GGSNAddress = p->GGSNAddress; char *AccessPointNameNI = p->AccessPointNameNI; /*4*/ int APNSelectionMode = p->APNSelectionMode; char *PDPTypeNumber = p->PDPTypeNumber; char *ServedPDPAddress = p->ServedPDPAddress; char *RecordOpenTime = p->RecordOpenTime; char *CallDuration = p->CallDuration; /*5*/ char* CauseForRecClosing = p->CauseForRecClosing; char *Diagnostics = p->Diagnostics; char* RecordSequenceNumber = p->RecordSequenceNumber; char *NodeID = p->NodeID; char* LocalRecordSequeceNumnber = p->LocalRecordSequeceNumnber; /*6*/ char* ChargingCharacteristics = p->ChargingCharacteristics; int DynamicAddressFlag = p->DynamicAddressFlag; char * ConsolidationResult = p->ConsolidationResult; int ChargingCharacterSelectionMode = p->ChargingCharacterSelectionMode; /* stamp */ char *DateCreated = p->DateCreated; /*10*/ char *GsnId = p->GsnId; char *RecordExtensions = p->RecordExtensions; char *SgsnPlmnIdentifier = p->SgsnPlmnIdentifier; /* both for R4 & R99*/ int AnonyAccessIndicator = p->AnonyAccessIndicator; /* only for R4 */ char *RemotePdpAddr = p->RemotePdpAddr; /* only for R4 */ char szSQL[SQLMAX]; char szSeqId[LEN_SEQ+1]; memset(szSQL,0,SQLMAX); memset(szSeqId,0,LEN_SEQ+1);/* EXEC SQL BEGIN DECLARE SECTION; EXEC SQL VAR szSeqId IS STRING(LEN_SEQ+1); EXEC SQL END DECLARE SECTION;*//* snprintf(szSQL, SQLMAX, "INSERT INTO %s (""SEQID," "FLAGREPEAT," "FLAGR499," "NETWORKINITIATEDPDPCONTEXT,""SERVEDIMSI," "SERVEDMSISDN," "SGSNIPADDRESS," "CHARGINGID," "GGSNADDRESS," "ACCESSPOINTNAMENI,""APNSELECTIONMODE," "PDPTYPENUMBER," "SERVEDPDPADDRESS," "RECORDOPENTIME,""CAUSEFORRECCLOSING," "DIAGNOSITICS," "RECORDSEQUENCENUMBER," "NODEID," "LOCALRECORDSEQUECENUMBER,""CHARGINGCHARACTERISTICS," "DYNAMICADDRESSFLAG," "CONSOLIDATIONRESULT," "CHARGINGCHARACTERSELECTIONMODE," "DATECREATED,""CALLDURATION,""GSNID,FLAGREAD"#ifdef EXT10cg1",RECORDEXTENSIONS"",SGSNPLMNIDENTIFIER"",ANONYMOUSACCESSINDICATOR"",REMOTEPDPADDRESS"#endif ") VALUES(" "SEQ_CGCDR.NEXTVAL," "%d,%d,%d," "'%s','%s','%s'," "'%s','%s','%s'," "%d,'%s','%s',TO_DATE('%s','YYYYMMDDHH24MISS')," "'%s','%s','%s','%s','%s'," "'%s',%d," "'%s',%d,SYSDATE," "'%s'," "'%s',%d"#ifdef EXT10cg1",'%s'"",'%s'"",%d"",'%s'"#endif ")", TableName, FlagRepeat, FlagR499, NetworkInitiatedPDPContext, ServedIMSI, ServedMSISDN, SGSNIPAddress, ChargingID, GGSNAddress, AccessPointNameNI, APNSelectionMode, PDPTypeNumber, ServedPDPAddress, RecordOpenTime, CauseForRecClosing, Diagnostics, RecordSequenceNumber, NodeID, LocalRecordSequeceNumnber, ChargingCharacteristics, DynamicAddressFlag, ConsolidationResult, ChargingCharacterSelectionMode, CallDuration,GsnId,FlagRead#ifdef EXT10cg1,RecordExtensions,SgsnPlmnIdentifier,AnonyAccessIndicator,RemotePdpAddr#endif );#ifdef _DEBUG logOra(sErrLog, szSQL);#endif*/snprintf(szSQL, SQLMAX, "INSERT INTO %s (" "FLAGREPEAT," "FLAGR499," "NETWORKINITIATEDPDPCONTEXT,""SERVEDIMSI," "SERVEDMSISDN," "SGSNIPADDRESS," /* 8*/"CHARGINGID," "GGSNADDRESS," "ACCESSPOINTNAMENI,""APNSELECTIONMODE," "PDPTYPENUMBER," "SERVEDPDPADDRESS," "RECORDOPENTIME,"/* "SGSNCHANGE,"*//*15*/"CAUSEFORRECCLOSING," "DIAGNOSITICS," "RECORDSEQUENCENUMBER," "NODEID," "LOCALRECORDSEQUECENUMBER,""CHARGINGCHARACTERISTICS," "DYNAMICADDRESSFLAG," /* 22 */"CONSOLIDATIONRESULT," "CHARGINGCHARACTERSELECTIONMODE," "DATECREATED,""CALLDURATION,""GSNID,FLAGREAD"#ifdef EXT10cg1",RECORDEXTENSIONS"",SGSNPLMNIDENTIFIER"",ANONYMOUSACCESSINDICATOR"",REMOTEPDPADDRESS"#endif ") VALUES(" "%d,%d,%d," "'%s','%s','%s'," "%s,'%s','%s'," "%d,'%s','%s','%s'," "%s,%s,%s,'%s',%s," "'%s',%d," "%s,%d,NOW()," "%s," "%s,%d"#ifdef EXT10cg1",'%s'"",'%s'"",%d"",'%s'"#endif ")", TableName, FlagRepeat, FlagR499, NetworkInitiatedPDPContext, ServedIMSI, ServedMSISDN, SGSNIPAddress, ChargingID, GGSNAddress, AccessPointNameNI, APNSelectionMode, PDPTypeNumber, ServedPDPAddress, RecordOpenTime, CauseForRecClosing, Diagnostics, RecordSequenceNumber, NodeID, LocalRecordSequeceNumnber, ChargingCharacteristics, DynamicAddressFlag, ConsolidationResult, ChargingCharacterSelectionMode, CallDuration,GsnId,FlagRead#ifdef EXT10cg1,RecordExtensions,SgsnPlmnIdentifier,AnonyAccessIndicator,RemotePdpAddr#endif);#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 WHENEVER SQLERROR GOTO sql_error; EXEC SQL EXECUTE DECLARE BEGIN EXECUTE IMMEDIATE :szSQL using :FlagRepeat, :FlagR499, :NetworkInitiatedPDPContext, :ServedIMSI, :ServedMSISDN, :SGSNIPAddress, :ChargingID, :GGSNAddress, :AccessPointNameNI, :APNSelectionMode, :PDPTypeNumber, :ServedPDPAddress, :RecordOpenTime, :CauseForRecClosing, :Diagnostics, :RecordSequenceNumber, :NodeID, :LocalRecordSequeceNumnber, :ChargingCharacteristics, :DynamicAddressFlag, :ConsolidationResult, :ChargingCharacterSelectionMode, :CallDuration,:GsnId,:FlagRead#ifdef EXT10cg1,:RecordExtensions,:SgsnPlmnIdentifier,:AnonyAccessIndicator,:RemotePdpAddr#endif; SELECT SEQ_CGCDR.CURRVAL INTO :szSeqId FROM DUAL;#ifdef NO_TRANS COMMIT; #endif END; END-EXEC; Unlock(); pOut->nFlag = SQL_OK; snprintf(p->SeqId, LEN_SEQ+1, "%s", szSeqId); return 0;sql_error: Unlock(); pOut->nFlag = SQL_RET_ERROR;#ifdef LOG_ERROR snprintf(szMsg, 512, "ORA:DbCGCDRInsert: %.70s", sqlca.sqlerrm.sqlerrmc); logOra(sErrLog, szMsg);#endif EXEC SQL WHENEVER SQLERROR CONTINUE; onError();*/ return 1;}int DbCGCDRSelect(char* pInSzTableName, char* pWhere, struct S_CGCDR** pOutCDR, int *number, struct S_RESULT* pOut){ char szMsg[512]; char GtpName[LEN_TABLENAME + 1]; char GtpId[LEN_SEQ + 1]; char SeqId[LEN_SEQ + 1]; int FlagRead; int FlagRepeat; int FlagR499; int NetworkInitiatedPDPContext; char ServedIMSI[17]; char ServedMSISDN[LEN_ServedMSISDN+1]; char SGSNIPAddress[46]; char CellIdentity[25]; char ChargingID[13]; char GGSNAddress[46]; char AccessPointNameNI[64]; int APNSelectionMode; char PDPTypeNumber[9]; char ServedPDPAddress[46]; char RecordOpenTime[LEN_DATETIME + 1]; char CallDuration[13];/* int SGSNChange;*/ char CauseForRecClosing[3]; char Diagnostics[LEN_Diagnostics+1]; char RecordSequenceNumber[11]; char NodeID[21]; char LocalRecordSequeceNumnber[11]; char ChargingCharacteristics[LEN_ChargingCharacteristics+1]; int DynamicAddressFlag; char ConsolidationResult[3]; int ChargingCharacterSelectionMode; char DateCreated[LEN_DATETIME + 1]; char GsnId[11]; char RecordExtensions[LEN_RecordExtensions+1]; char SgsnPlmnIdentifier[LEN_SgsnPlmnIdentifier+1]; /* both for R4 & R99*/ int AnonyAccessIndicator; /* only for R4 */ char RemotePdpAddr[45+1]; /* only for R4 *//* EXEC SQL BEGIN DECLARE SECTION; EXEC SQL VAR Diagnostics IS STRING(LEN_Diagnostics + 1); EXEC SQL VAR RecordExtensions IS STRING(LEN_RecordExtensions + 1); EXEC SQL VAR SgsnPlmnIdentifier IS STRING(LEN_SgsnPlmnIdentifier + 1); EXEC SQL VAR RemotePdpAddr IS STRING(45 + 1); EXEC SQL VAR GtpName IS STRING(LEN_TABLENAME + 1); EXEC SQL VAR GtpId IS STRING(LEN_SEQ + 1); EXEC SQL VAR SeqId IS STRING(LEN_SEQ+1); EXEC SQL VAR ServedIMSI IS STRING(LEN_ServedIMSI+1); EXEC SQL VAR ServedMSISDN IS STRING(LEN_ServedMSISDN+1); EXEC SQL VAR SGSNIPAddress IS STRING(LEN_SGSNAddr+1); EXEC SQL VAR CellIdentity IS STRING(24+1); EXEC SQL VAR GGSNAddress IS STRING(LEN_SGSNAddr+1); EXEC SQL VAR AccessPointNameNI IS STRING(63+1); EXEC SQL VAR PDPTypeNumber IS STRING(8+1); EXEC SQL VAR ServedPDPAddress IS STRING(45+1); EXEC SQL VAR RecordOpenTime IS STRING(LEN_DATETIME+1); EXEC SQL VAR NodeID IS STRING(20+1); EXEC SQL VAR DateCreated IS STRING(LEN_DATETIME+1); EXEC SQL VAR GsnId IS STRING(LEN_GSNID+1); EXEC SQL VAR CallDuration IS STRING(12+1); EXEC SQL VAR ChargingID IS STRING(12+1); EXEC SQL VAR CauseForRecClosing IS STRING(3); EXEC SQL VAR RecordSequenceNumber IS STRING(11); EXEC SQL VAR LocalRecordSequeceNumnber IS STRING(11); EXEC SQL VAR ChargingCharacteristics IS STRING(LEN_ChargingCharacteristics+1); EXEC SQL VAR ConsolidationResult IS STRING(3); EXEC SQL END DECLARE SECTION;*/ struct S_CGCDR *pLCLOC = *pOutCDR; int nNumber = 0; char szSQL[SQLMAX]; char szSQL2[SQLMAX]; char szSQL3[SQLMAX]; struct S_CGCDR* p2; int j; char * sz ; short id[40]; *number = 0; if(pLCLOC != NULL) { return -1; } snprintf(szSQL2, SQLMAX, "SELECT COUNT(*) FROM %s WHERE %s", pInSzTableName, pWhere); snprintf(szSQL, SQLMAX, "SELECT " "SEQID,""FLAGREPEAT," "FLAGR499," "NETWORKINITIATEDPDPCONTEXT," "SERVEDIMSI," "SERVEDMSISDN," "SGSNIPADDRESS," "CHARGINGID," "GGSNADDRESS," "ACCESSPOINTNAMENI," "APNSELECTIONMODE," "PDPTYPENUMBER," "SERVEDPDPADDRESS," "TO_CHAR(RECORDOPENTIME,'YYYYMMDDHH24MISS'),""CALLDURATION,"/* "SGSNCHANGE,"*/ "CAUSEFORRECCLOSING," "DIAGNOSITICS,""RECORDSEQUENCENUMBER," "NODEID," "LOCALRECORDSEQUECENUMBER,"/* "ACCESSPOINTNAMEOI," "UNSENTDOWNLINKVOLUMN,"*/ "CHARGINGCHARACTERISTICS," "DYNAMICADDRESSFLAG," "CONSOLIDATIONRESULT," "CHARGINGCHARACTERSELECTIONMODE," "TO_CHAR(DATECREATED,'YYYYMMDDHH24MISS'),"/*"GTPID,GTPLTABLE,"*/"GSNID,FLAGREAD"#ifdef EXT10cg",RECORDEXTENSIONS"",SGSNPLMNIDENTIFIER"",ANONYMOUSACCESSINDICATOR"",REMOTEPDPADDRESS"#endif " 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 C2_CGCDR CURSOR FOR stat2; EXEC SQL OPEN C2_CGCDR; EXEC SQL WHENEVER NOT FOUND goto notfound2; EXEC SQL FETCH C2_CGCDR INTO :nNumber; EXEC SQL CLOSE C2_CGCDR; if(nNumber <= 0) { Unlock(); * number = 0; return 0; } sz = malloc(SIZE_S_CGCDR*nNumber); memset(sz, 0, SIZE_S_CGCDR*nNumber); EXEC SQL WHENEVER SQLERROR GOTO sql_error; EXEC SQL PREPARE stat FROM :szSQL; EXEC SQL DECLARE C1_CGCDR CURSOR FOR stat; EXEC SQL OPEN C1_CGCDR; EXEC SQL WHENEVER NOT FOUND goto notfound; #ifdef _DEBUG logOra(sErrLog, "CURSOR...");#endif for(j=0;j<nNumber;j++) { EXEC SQL FETCH C1_CGCDR INTO :SeqId:id[34],:FlagRepeat:id[0],:FlagR499:id[1],:NetworkInitiatedPDPContext:id[2],:ServedIMSI:id[4],:ServedMSISDN:id[6],:SGSNIPAddress:id[7],:ChargingID:id[12],:GGSNAddress:id[13],:AccessPointNameNI:id[14],:APNSelectionMode:id[15],:PDPTypeNumber:id[16],:ServedPDPAddress:id[17],:RecordOpenTime:id[18],:CallDuration:id[19],:CauseForRecClosing:id[21],:Diagnostics:id[22],:RecordSequenceNumber:id[23],:NodeID:id[24],:LocalRecordSequeceNumnber:id[25],:ChargingCharacteristics:id[28],:DynamicAddressFlag:id[29],:ConsolidationResult:id[30],:ChargingCharacterSelectionMode:id[31],:DateCreated:id[32],:GsnId:id[33],:FlagRead:id[33]#ifdef EXT10cg,:RecordExtensions:id[1],:SgsnPlmnIdentifier:id[1],:AnonyAccessIndicator:id[1],:RemotePdpAddr:id[1]#endif; p2 = (struct S_CGCDR*)&sz[SIZE_S_CGCDR*j]; p2->FlagRepeat=FlagRepeat; p2->FlagR499=FlagR499; p2->NetworkInitiatedPDPContext=NetworkInitiatedPDPContext; memcpy(p2->ServedIMSI,ServedIMSI,16); memcpy(p2->ServedMSISDN,ServedMSISDN,LEN_ServedMSISDN); memcpy(p2->SGSNIPAddress,SGSNIPAddress,45); memcpy(p2->ChargingID,ChargingID,sizeof(p2->ChargingID)); memcpy(p2->GGSNAddress,GGSNAddress,45); memcpy(p2->AccessPointNameNI,AccessPointNameNI,63); p2->APNSelectionMode=APNSelectionMode; memcpy(p2->PDPTypeNumber,PDPTypeNumber,8); memcpy(p2->ServedPDPAddress,ServedPDPAddress,45); memcpy(p2->RecordOpenTime,RecordOpenTime,LEN_DATETIME); memcpy(p2->CallDuration,CallDuration,13); memcpy(p2->CauseForRecClosing,CauseForRecClosing,3); memcpy(p2->Diagnostics,Diagnostics,LEN_Diagnostics); memcpy(p2->RecordSequenceNumber,RecordSequenceNumber,11); memcpy(p2->NodeID,NodeID,20); memcpy(p2->LocalRecordSequeceNumnber,LocalRecordSequeceNumnber,11); memcpy(p2->ChargingCharacteristics,ChargingCharacteristics,LEN_ChargingCharacteristics); p2->DynamicAddressFlag=DynamicAddressFlag; memcpy(p2->ConsolidationResult,ConsolidationResult,2); p2->ChargingCharacterSelectionMode=ChargingCharacterSelectionMode; memcpy(p2->DateCreated,DateCreated,LEN_DATETIME); memcpy(p2->GsnId,GsnId,10); memcpy(p2->SeqId,SeqId,20); p2->FlagRead=FlagRead;#ifdef EXT10cgmemcpy(p2->RecordExtensions,RecordExtensions,LEN_RecordExtensions);memcpy(p2->SgsnPlmnIdentifier,SgsnPlmnIdentifier,LEN_SgsnPlmnIdentifier);p2->AnonyAccessIndicator = AnonyAccessIndicator;memcpy(p2->RemotePdpAddr, RemotePdpAddr, 45);#endif 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; } * pOutCDR = (struct S_CGCDR*)sz; * number = nNumber; EXEC SQL CLOSE C1_CGCDR; if(nNumber > 0) { EXEC SQL COMMIT WORK; } Unlock(); pOut->nFlag = SQL_OK; return 0;notfound: EXEC SQL CLOSE C1_CGCDR; Unlock(); pOut->nFlag = SQL_OK; return 0;notfound2: EXEC SQL CLOSE C2_CGCDR; Unlock(); return 0;sql_error: EXEC SQL CLOSE C1_CGCDR; Unlock(); pOut->nFlag = SQL_RET_ERROR;#ifdef LOG_ERROR snprintf(szMsg, 512, "ORA:DbCGCDRSelect: %.70s", sqlca.sqlerrm.sqlerrmc); logOra(sErrLog, szMsg);#endif EXEC SQL WHENEVER SQLERROR CONTINUE; onError(); return 1;sql_error2: EXEC SQL CLOSE C2_CGCDR; Unlock(); pOut->nFlag = SQL_RET_ERROR;#ifdef LOG_ERROR snprintf(szMsg, 512, "ORA:DbCGCDRSelect: %.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 + -