📄 oscdr.cpp
字号:
int FlagR499; int NetworkInitiatedPDPContext; int SystemType; char ServedIMSI[17]; char ServedIMEI[17]; char ServedMSISDN[LEN_ServedMSISDN+1]; char SGSNIPAddress[46]; char MSNetworkCapability[LEN_MSNetworkCapability+1]; char RoutingAreaCode[9]; char LocationAreaCode[17]; char ChargingID[13]; char GGSNAddress[46]; char AccessPointNameNI[64]; int APNSelectionMode; char PDPTypeNumber[9]; char ServedPDPAddress[46]; char RecordOpenTime[LEN_DATETIME + 1]; int SGSNChange; char CauseForRecClosing[3]; char Diagnostics[LEN_Diagnostics+1]; char RecordSequenceNumber[11]; char NodeID[21]; char LocalRecordSequeceNumnber[11]; char AccessPointNameOI[38]; char UnsentDownlinkVolume[11]; char ChargingCharacteristics[LEN_ChargingCharacteristics+1]; int DynamicAddressFlag; /* CAMEL Information*/ char SCFAddress[LEN_SCFAddress+1]; char ServiceKey[LEN_ServiceKey+1]; int DefaultTransacHandling; char CAMELAPNNI[64]; char CAMELAPNOI[38]; char NumberOfDPEncounter[11]; char LevelOfCamelService[4]; char FreeFormatData[161]; int FFDAppendIndicator; int DefaultSMSHandling; char CAMELCallingPartyNumber[15]; char CAMELAccessDestinationSubNumber[44]; char CAMELSMSAdress[21]; char SmsReferenceNumber[9]; /* int ConsolidationResult; int ChargingCharacterSelectionMode; */ /* stamp */ char DateCreated[LEN_DATETIME + 1]; char GsnId[11]; short id[54]; char CellIdentity[25]; char CallDuration[13]; char RecordExtensions[LEN_RecordExtensions+1]; int ChargingCharacterSelectionMode; int AnonyAccessIndicator;/* 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 CallDuration IS STRING(12 + 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 ServedIMEI 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 MSNetworkCapability IS STRING(LEN_MSNetworkCapability+1); EXEC SQL VAR RoutingAreaCode IS STRING(8+1); EXEC SQL VAR LocationAreaCode IS STRING(16+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 AccessPointNameOI IS STRING(37+1); EXEC SQL VAR SCFAddress IS STRING(LEN_SCFAddress+1); EXEC SQL VAR CAMELAPNNI IS STRING(63+1); EXEC SQL VAR CAMELAPNOI IS STRING(37+1); EXEC SQL VAR LevelOfCamelService IS STRING(3+1); EXEC SQL VAR FreeFormatData IS STRING(160+1); EXEC SQL VAR CAMELCallingPartyNumber IS STRING(14+1); EXEC SQL VAR CAMELAccessDestinationSubNumber IS STRING(43+1); EXEC SQL VAR CAMELSMSAdress IS STRING(20+1); EXEC SQL VAR SmsReferenceNumber IS STRING(8+1); EXEC SQL VAR DateCreated IS STRING(LEN_DATETIME+1); EXEC SQL VAR GsnId IS STRING(LEN_GSNID+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 CellIdentity IS STRING(25); EXEC SQL VAR UnsentDownlinkVolume IS STRING(11); EXEC SQL VAR ServiceKey IS STRING(LEN_ServiceKey+1); EXEC SQL END DECLARE SECTION; struct S_OSCDR *pLCLOC = *pOutCDR; int nNumber = 0; char szSQL[SQLMAX]; char szSQL2[SQLMAX]; char szSQL3[SQLMAX]; struct S_OSCDR* p2; int j; char * sz ; *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," "SYSTEMTYPE," "SERVEDIMSI," "SERVEDIMEI," "SERVEDMSISDN," "SGSNIPADDRESS," "MSNNETWORKCAPABILITY," "ROUTINGAREACODE," "LOCATIONAREACODE," "CHARGINGID,""GGSNADDRESS," "ACCESSPOINTNAMENI," "APNSELECTIONMODE," "PDPTYPENUMBER," "SERVEDPDPADDRESS," "TO_CHAR(RECORDOPENTIME,'YYYYMMDDHH24MISS')," "SGSNCHANGE," "CAUSEFORRECCLOSING," "DIAGNOSITICS," "RECORDSEQUENCENUMBER," "NODEID," "LOCALRECORDSEQUECENUMBER," "ACCESSPOINTNAMEOI," "UNSENTDOWNLINKVOLUMN," "CHARGINGCHARACTERISTICS," "DYNAMICADDRESSFLAG," "TO_CHAR(DATECREATED,'YYYYMMDDHH24MISS'),""GTPID,GTPLTABLE,""GSNID,""SCFADDRESS,""SERVICEKEY,""DEFAULTTRANSACHANDLING,""CAMELAPNNI,""CAMELAPNOI,""NUMBEROFDPENCOUNTER,""LEVELOFCAMELSERVICE,""FREEFORMATDATA,""FFDAPPENDINDICATOR,""DEFAULTSMSHANDLING,""CAMELCALLINGPARTYNUMBER,""CAMELACCESSDESTNO,""CAMELSMSADDRESS," "SMSREFERENCENUMBER,FLAGREAD,CELLIDENTITY,CALLDURATION"#ifdef EXT10os",RECORDEXTENSIONS"",CHARGINGCHARACTERSELECTIONMODE"",ANONYACCESSINDICATOR"#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_OSCDR CURSOR FOR stat2; EXEC SQL OPEN C2_OSCDR; EXEC SQL WHENEVER NOT FOUND goto notfound2; EXEC SQL FETCH C2_OSCDR INTO :nNumber; EXEC SQL CLOSE C2_OSCDR; if(nNumber <= 0) { Unlock(); * number = 0; return 0; } sz = malloc(SIZE_S_OSCDR*nNumber); memset(sz, 0, SIZE_S_OSCDR*nNumber); EXEC SQL WHENEVER SQLERROR GOTO sql_error; EXEC SQL PREPARE stat FROM :szSQL; EXEC SQL DECLARE C1_OSCDR CURSOR FOR stat; EXEC SQL OPEN C1_OSCDR; EXEC SQL WHENEVER NOT FOUND goto notfound; #ifdef _DEBUG logOra(sErrLog, "CURSOR...");#endif for(j=0;j<nNumber;j++) { EXEC SQL FETCH C1_OSCDR INTO :SeqId:id[0],:FlagRepeat:id[1],:FlagR499:id[2],:NetworkInitiatedPDPContext:id[2],:SystemType:id[3],:ServedIMSI:id[4],:ServedIMEI:id[5],:ServedMSISDN:id[6],:SGSNIPAddress:id[7],:MSNetworkCapability:id[8],:RoutingAreaCode:id[9],:LocationAreaCode:id[10],:ChargingID:id[11],:GGSNAddress:id[12],:AccessPointNameNI:id[13],:APNSelectionMode:id[14],:PDPTypeNumber:id[15],:ServedPDPAddress:id[16],:RecordOpenTime:id[17],:SGSNChange:id[18],:CauseForRecClosing:id[19],:Diagnostics:id[20],:RecordSequenceNumber:id[21],:NodeID:id[22],:LocalRecordSequeceNumnber:id[23],:AccessPointNameOI:id[24],:UnsentDownlinkVolume:id[25],:ChargingCharacteristics:id[26],:DynamicAddressFlag:id[27],:DateCreated:id[28],:GtpId:id[1],:GtpName:id[2],:GsnId:id[29],:SCFAddress:id[30],:ServiceKey:id[31],:DefaultTransacHandling:id[32],:CAMELAPNNI:id[33],:CAMELAPNOI:id[34],:NumberOfDPEncounter:id[35],:LevelOfCamelService:id[36],:FreeFormatData:id[37],:FFDAppendIndicator:id[38],:DefaultSMSHandling:id[39],:CAMELCallingPartyNumber:id[40],:CAMELAccessDestinationSubNumber:id[41],:CAMELSMSAdress:id[42],:SmsReferenceNumber:id[43],:FlagRead:id[33],:CellIdentity:id[33],:CallDuration:id[33]#ifdef EXT10os,:RecordExtensions:id[1],:ChargingCharacterSelectionMode:id[1],:AnonyAccessIndicator:id[1]#endif; p2 = (struct S_OSCDR*)&sz[SIZE_S_OSCDR*j]; p2->FlagRepeat=FlagRepeat; p2->FlagR499=FlagR499; p2->NetworkInitiatedPDPContext=NetworkInitiatedPDPContext; p2->SystemType=SystemType; memcpy(p2->ServedIMSI,ServedIMSI,16); memcpy(p2->ServedIMEI,ServedIMEI,16); memcpy(p2->ServedMSISDN,ServedMSISDN,LEN_ServedMSISDN); memcpy(p2->SGSNIPAddress,SGSNIPAddress,45); memcpy(p2->MSNetworkCapability,MSNetworkCapability,LEN_MSNetworkCapability); memcpy(p2->RoutingAreaCode,RoutingAreaCode,8); memcpy(p2->LocationAreaCode,LocationAreaCode,16); memcpy(p2->ChargingID,ChargingID,12); 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); p2->SGSNChange=SGSNChange; 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->AccessPointNameOI,AccessPointNameOI,37); memcpy(p2->UnsentDownlinkVolume,UnsentDownlinkVolume,10); memcpy(p2->ChargingCharacteristics,ChargingCharacteristics,LEN_ChargingCharacteristics); p2->DynamicAddressFlag=DynamicAddressFlag; memcpy(p2->DateCreated,DateCreated,LEN_DATETIME); memcpy(p2->GsnId,GsnId,10); memcpy(p2->SCFAddress,SCFAddress,LEN_SCFAddress+1); memcpy(p2->ServiceKey,ServiceKey,LEN_ServiceKey); p2->DefaultTransacHandling=DefaultTransacHandling; memcpy(p2->CAMELAPNNI,CAMELAPNNI,63); memcpy(p2->CAMELAPNOI,CAMELAPNOI,37); memcpy(p2->NumberOfDPEncounter,NumberOfDPEncounter,11); memcpy(p2->LevelOfCamelService,LevelOfCamelService,3); memcpy(p2->FreeFormatData,FreeFormatData,160); p2->FFDAppendIndicator=FFDAppendIndicator; p2->DefaultSMSHandling=DefaultSMSHandling; memcpy(p2->CAMELCallingPartyNumber,CAMELCallingPartyNumber,14); memcpy(p2->CAMELAccessDestinationSubNumber,CAMELAccessDestinationSubNumber,43); memcpy(p2->CAMELSMSAdress,CAMELSMSAdress,20); memcpy(p2->SmsReferenceNumber,SmsReferenceNumber,8); memcpy(p2->SeqId,SeqId,20); memcpy(p2->GtpId,GtpId,LEN_SEQ); memcpy(p2->GtpName,GtpName,LEN_TABLENAME); p2->FlagRead=FlagRead; memcpy(p2->CellIdentity,CellIdentity,20); memcpy(p2->CallDuration,CallDuration,12);p2->AnonyAccessIndicator = AnonyAccessIndicator; 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_OSCDR*)sz; * number = nNumber; EXEC SQL CLOSE C1_OSCDR; if(nNumber > 0) { EXEC SQL COMMIT WORK; } Unlock(); pOut->nFlag = SQL_OK; return 0;notfound: EXEC SQL CLOSE C1_OSCDR; Unlock(); pOut->nFlag = SQL_OK; return 0;notfound2: EXEC SQL CLOSE C2_OSCDR; Unlock(); return 0;sql_error: EXEC SQL CLOSE C1_OSCDR; Unlock(); pOut->nFlag = SQL_RET_ERROR;#ifdef LOG_ERROR snprintf(szMsg, 512, "ORA:DbOSCDRSelect: %.70s", sqlca.sqlerrm.sqlerrmc); logOra(sErrLog, szMsg);#endif EXEC SQL WHENEVER SQLERROR CONTINUE; onError(); return 1;sql_error2: EXEC SQL CLOSE C2_OSCDR; Unlock(); pOut->nFlag = SQL_RET_ERROR;#ifdef LOG_ERROR snprintf(szMsg, 512, "ORA:DbOSCDRSelect: %.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 + -