📄 cscdr.cpp
字号:
pOut->nFlag = SQL_RET_ERROR;#ifdef LOG_ERROR snprintf(szMsg, 512, "ORA:DbCSCDRInsert: %.70s", sqlca.sqlerrm.sqlerrmc); logOra(sErrLog, szMsg);#endif EXEC SQL WHENEVER SQLERROR CONTINUE; onError(); */ return 1;}int DbCSCDRSelect(char* pInSzTableName, char* pWhere, struct S_CSCDR** 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; 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[11]; 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]; char ConsolidationResult[3]; char ChargingCharacterSelectionMode; /* stamp */ char DateCreated[LEN_DATETIME + 1]; char GsnId[11]; char CallDuration[12+1]; char RecordExtensions[LEN_RecordExtensions+1]; char CellIdentity[25]; int AnonyAccessIndicator;/* EXEC SQL BEGIN DECLARE SECTION; EXEC SQL VAR Diagnostics IS STRING(LEN_Diagnostics + 1); EXEC SQL VAR CellIdentity IS STRING(24 + 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(10+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 VAR UnsentDownlinkVolume IS STRING(11); EXEC SQL VAR ServiceKey IS STRING(LEN_ServiceKey+1); EXEC SQL VAR NumberOfDPEncounter IS STRING(11); EXEC SQL END DECLARE SECTION; struct S_CSCDR *pLCLOC = *pOutCDR; int nNumber = 0; char szSQL[SQLMAX]; char szSQL2[SQLMAX]; char szSQL3[SQLMAX]; struct S_CSCDR* p2; int j; char * sz ; short id[54]; *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," "CONSOLIDATIONRESULT," "CHARGINGCHARACTERSELECTIONMODE," "TO_CHAR(DATECREATED,'YYYYMMDDHH24MISS'),""GSNID,""SCFADDRESS,""SERVICEKEY,""DEFAULTTRANSACHANDLING,""CAMELAPNNI,""CAMELAPNOI,""NUMBEROFDPENCOUNTER,""LEVELOFCAMELSERVICE,""FREEFORMATDATA,""FFDAPPENDINDICATOR,""DEFAULTSMSHANDLING,""CAMELCALLINGPARTYNUMBER,""CAMELACCESSDESTNO,""CAMELSMSADDRESS," "SMSREFERENCENUMBER,FLAGREAD,CALLDURATION"#ifdef EXT10cs",RECORDEXTENSIONS"",CELLIDENTITY"",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_CSCDR CURSOR FOR stat2; EXEC SQL OPEN C2_CSCDR; EXEC SQL WHENEVER NOT FOUND goto notfound2; EXEC SQL FETCH C2_CSCDR INTO :nNumber; EXEC SQL CLOSE C2_CSCDR; if(nNumber <= 0) { Unlock(); * number = 0; return 0; } sz = malloc(SIZE_S_CSCDR*nNumber); memset(sz, 0, SIZE_S_CSCDR*nNumber); EXEC SQL WHENEVER SQLERROR GOTO sql_error; EXEC SQL PREPARE stat FROM :szSQL; EXEC SQL DECLARE C1_CSCDR CURSOR FOR stat; EXEC SQL OPEN C1_CSCDR; EXEC SQL WHENEVER NOT FOUND goto notfound; #ifdef _DEBUG logOra(sErrLog, "CURSOR...");#endif for(j=0;j<nNumber;j++) { EXEC SQL FETCH C1_CSCDR INTO :SeqId:id[0],:FlagRepeat:id[0],:FlagR499:id[0],:NetworkInitiatedPDPContext:id[0],:SystemType:id[0],:ServedIMSI:id[0],:ServedIMEI:id[0],:ServedMSISDN:id[0],:SGSNIPAddress:id[0],:MSNetworkCapability:id[0],:RoutingAreaCode:id[0],:LocationAreaCode:id[0],:ChargingID:id[0],:GGSNAddress:id[0],:AccessPointNameNI:id[0],:APNSelectionMode:id[0],:PDPTypeNumber:id[0],:ServedPDPAddress:id[0],:RecordOpenTime:id[0],:SGSNChange:id[0],:CauseForRecClosing:id[0],:Diagnostics:id[0],:RecordSequenceNumber:id[0],:NodeID:id[0],:LocalRecordSequeceNumnber:id[0],:AccessPointNameOI:id[0],:UnsentDownlinkVolume:id[0],:ChargingCharacteristics:id[0],:DynamicAddressFlag:id[0],:ConsolidationResult:id[0],:ChargingCharacterSelectionMode:id[0],:DateCreated:id[0],:GsnId:id[0],:SCFAddress:id[0],:ServiceKey:id[0],:DefaultTransacHandling:id[0],:CAMELAPNNI:id[0],:CAMELAPNOI:id[0],:NumberOfDPEncounter:id[0],:LevelOfCamelService:id[0],:FreeFormatData:id[0],:FFDAppendIndicator:id[0],:DefaultSMSHandling:id[0],:CAMELCallingPartyNumber:id[0],:CAMELAccessDestinationSubNumber:id[0],:CAMELSMSAdress:id[0],:SmsReferenceNumber:id[0],:FlagRead:id[33],:CallDuration:id[0]#ifdef EXT10cs,:RecordExtensions:id[1] ,:CellIdentity:id[1],:AnonyAccessIndicator:id[1]#endif; p2 = (struct S_CSCDR*)&sz[SIZE_S_CSCDR*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,10); 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->ConsolidationResult,ConsolidationResult,2); p2->ChargingCharacterSelectionMode=ChargingCharacterSelectionMode; 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); p2->FlagRead=FlagRead; memcpy(p2->CallDuration,CallDuration,12);#ifdef EXT10csmemcpy(p2->RecordExtensions,RecordExtensions,LEN_RecordExtensions);memcpy(p2->CellIdentity,CellIdentity,24);p2->AnonyAccessIndicator = AnonyAccessIndicator;#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_CSCDR*)sz; * number = nNumber; EXEC SQL CLOSE C1_CSCDR; if(nNumber > 0) { EXEC SQL COMMIT WORK; } Unlock(); pOut->nFlag = SQL_OK; return 0;notfound: EXEC SQL CLOSE C1_CSCDR; Unlock(); pOut->nFlag = SQL_OK; return 0;notfound2: EXEC SQL CLOSE C2_CSCDR; Unlock(); return 0;sql_error: EXEC SQL CLOSE C1_CSCDR; Unlock(); pOut->nFlag = SQL_RET_ERROR;#ifdef LOG_ERROR snprintf(szMsg, 512, "ORA:DbCSCDRSelect: %.70s", sqlca.sqlerrm.sqlerrmc); logOra(sErrLog, szMsg);#endif EXEC SQL WHENEVER SQLERROR CONTINUE; onError(); return 1;sql_error2: EXEC SQL CLOSE C2_CSCDR; Unlock(); pOut->nFlag = SQL_RET_ERROR;#ifdef LOG_ERROR snprintf(szMsg, 512, "ORA:DbCSCDRSelect: %.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 + -