⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cgcdr.cpp

📁 Mysql的处理
💻 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 + -