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

📄 lcomm.cpp

📁 Mysql的处理
💻 CPP
字号:
#include "oradb.h"int DbLCOMMInsert(struct S_LCOMM* p, struct S_RESULT* pOut){	char szMsg[512];	char* TableName = p->TableName;	char* SeqId = p->SeqId;	int SubId = p->SubId;	char* SGSNAddr = p->SGSNAddr;	char* CauseForRecordClosing = p->CauseForRecordClosing;	char* RSN = p->RSN;	char* LRSN = p->LRSN;	char* RecordExtensions = p->RecordExtensions;	int SystemType = p->SystemType;	int SGSNChange = p->SGSNChange;	char *NodeId = p->NodeId;	int RNC = p->RNC;	char* SortId = p->SortId;	char szSQL[SQLMAX];/*	snprintf(szSQL, SQLMAX, "INSERT INTO %s ("				"SEQID,"				"SUBID,"				"SGSNADDR,"				"CAUSERECORDCLOSING,"				"RECORDSEQUENCENUMBER,"				"LOCALRECORDSEQUENCENUMBER,"				"SYSTEMTYPE,"				"SGSNCHANGE,"				"NODEID,"				"RNCUDVOLUMN,"				"RECORDEXTENSIONS"	",SORTID"				") VALUES("					"'%s',%d,'%s','%s','%s',"					"'%s',%d,%d,'%s',%d,'%s','%s')",				TableName,				SeqId,SubId,SGSNAddr,CauseForRecordClosing,RSN,			LRSN,SystemType,SGSNChange,NodeId,RNC,RecordExtensions, SortId);			#ifdef _DEBUG	logOra(sErrLog, szSQL);#endif*/			snprintf(szSQL, SQLMAX, "INSERT INTO %s ("								"SUBID,"				"SGSNADDR,"				"CAUSERECORDCLOSING,"				"RECORDSEQUENCENUMBER,"				"LOCALRECORDSEQUENCENUMBER,"				"SYSTEMTYPE,"				"SGSNCHANGE,"				"NODEID,"				"RNCUDVOLUMN,"				"RECORDEXTENSIONS"					",SORTID"				") VALUES("					"%d,'%s',%s,%s,"					"%s,%d,%d,'%s',%d,'%s',%s)",				TableName,				SubId,SGSNAddr,CauseForRecordClosing,RSN,			LRSN,SystemType,SGSNChange,NodeId,RNC,RecordExtensions, SortId);				#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			:SeqId,:SubId,:SGSNAddr,:CauseForRecordClosing,:RSN,			:LRSN,:SystemType,:SGSNChange,:NodeId,:RNC,:RecordExtensions,	:SortId;#ifdef NO_TRANS			COMMIT;	#endif		END;	END-EXEC;	Unlock();	pOut->nFlag = SQL_OK;	return 0;sql_error:	Unlock();	pOut->nFlag = SQL_RET_ERROR;#ifdef LOG_ERROR	snprintf(szMsg, 512, "ORA:DbLCOMMInsert: %.70s", sqlca.sqlerrm.sqlerrmc);    logOra(sErrLog, szMsg);#endif    EXEC SQL WHENEVER SQLERROR CONTINUE; 	onError();*/		return 1;}int DbLCOMMSelect(char* pInSzTableName, char* pInSzSeqId, struct S_LCOMM** pOutLChangeLocation, int * number, struct S_RESULT* pOut){	char szMsg[512];	char SeqId[LEN_SEQ + 1];	int SubId;	char SGSNAddr[45 + 1];	char CauseForRecordClosing[3];	char RSN[11];	char LRSN[11];	int SystemType;	int SGSNChange;	char NodeId[21];	char RecordExtensions[LEN_RecordExtensions];	int RNC;		char SortId[LEN_SORT+1];	/*	EXEC SQL BEGIN DECLARE SECTION;	EXEC SQL VAR SortId IS STRING(LEN_SORT+1);	EXEC SQL VAR SeqId IS STRING(LEN_SEQ+1);	EXEC SQL VAR SGSNAddr IS STRING(45+1);	EXEC SQL VAR NodeId IS STRING(20+1);	EXEC SQL VAR RecordExtensions IS STRING(LEN_RecordExtensions+1);	EXEC SQL VAR CauseForRecordClosing IS STRING(3);	EXEC SQL VAR RSN IS STRING(11);	EXEC SQL VAR LRSN IS STRING(11);	EXEC SQL END DECLARE SECTION;	struct S_LCOMM *pLCLOC = *pOutLChangeLocation;	int nNumber = 0;	char szSQL[SQLMAX];	char szSQL2[SQLMAX];	struct S_LCOMM* p2;	int j;	char * sz ;	short id[10];	if(pLCLOC != NULL)	{		return -1;	}	snprintf(szSQL2, SQLMAX, 		"SELECT COUNT(*) FROM %s WHERE SEQID=%s",		pInSzTableName, pInSzSeqId);	snprintf(szSQL, SQLMAX, 		"SELECT "		"SEQID,"		"SUBID," "SGSNADDR," "CAUSERECORDCLOSING," "RECORDSEQUENCENUMBER," "LOCALRECORDSEQUENCENUMBER," "SYSTEMTYPE," "SGSNCHANGE," "NODEID," "RNCUDVOLUMN," "RECORDEXTENSIONS"		",SORTID"		" FROM %s WHERE SEQID=%s",		pInSzTableName, pInSzSeqId);#ifdef _DEBUG#ifdef LOG_SELECT	logOra(sErrLog, szSQL);#endif#endif	*number = 0;	Lock();	EXEC SQL WHENEVER SQLERROR GOTO sql_error; 	EXEC SQL PREPARE stat2 FROM :szSQL2;	EXEC SQL DECLARE C2 CURSOR FOR stat2;	EXEC SQL OPEN C2;	EXEC SQL WHENEVER NOT FOUND goto notfound2;	EXEC SQL FETCH C2 INTO :nNumber;	EXEC SQL CLOSE C2;	    	if(nNumber <= 0)	{		Unlock();	* number = 0;		return 0;	}	sz = malloc(SIZE_S_LCOMM*nNumber);	memset(sz, 0, SIZE_S_LCOMM*nNumber);	EXEC SQL WHENEVER SQLERROR GOTO sql_error2; 	EXEC SQL PREPARE stat FROM :szSQL;	EXEC SQL DECLARE C1 CURSOR FOR stat;	EXEC SQL OPEN C1;	EXEC SQL WHENEVER NOT FOUND goto notfound;		#ifdef _DEBUG	logOra(sErrLog, "CURSOR...");#endif	for(j=0;j<nNumber;j++)	{		EXEC SQL FETCH C1 INTO 		:SeqId:id[8],		:SubId:id[0],			:SGSNAddr:id[0],			:CauseForRecordClosing:id[1],			:RSN:id[2],			:LRSN:id[3],			:SystemType:id[4],			:SGSNChange:id[5],			:NodeId:id[6],			:RNC:id[7],			:RecordExtensions:id[9],				:SortId:id[0];			p2 = (struct S_LCOMM*)&sz[SIZE_S_LCOMM*j];				memcpy(p2->SeqId, SeqId, 20);		memcpy(p2->SGSNAddr, SGSNAddr, 45);		memcpy(p2->CauseForRecordClosing, CauseForRecordClosing,2);		memcpy(p2->RSN,RSN,10);		memcpy(p2->LRSN,LRSN,10);		memcpy(p2->RecordExtensions, RecordExtensions, LEN_RecordExtensions);		p2->SystemType = SystemType;		p2->SGSNChange = SGSNChange;		memcpy(p2->NodeId, NodeId, 20);		p2->RNC = RNC;		p2->SubId = SubId;		memcpy(p2->SortId, SortId, LEN_SORT);		memcpy(p2->TableName, pInSzTableName, LEN_TABLENAME);		/*		printf("******* %s ****\n", p2->SeqId);/*	#ifdef _DEBUG			logOra(sErrLog,			"%d]%s "			"%d %d %d %d %d "			"%s "			"%d",			j,			p2->SGSNAddr,		p2->CauseForRecordClosing,		p2->RSN,		p2->LRSN,		p2->SystemType,		p2->SGSNChange,		p2->NodeId,		p2->RNC);	#endif	}		* pOutLChangeLocation = (struct S_LCOMM*)sz;	* number = nNumber;notfound:	EXEC SQL CLOSE C1;	Unlock();	pOut->nFlag = SQL_OK;	return 0;notfound2:	EXEC SQL CLOSE C2;	Unlock();	return 0;sql_error:	EXEC SQL CLOSE C1;	Unlock();	pOut->nFlag = SQL_RET_ERROR;#ifdef LOG_ERROR	snprintf(szMsg, 512, "ORA:DbLCOMMSelect: %.70s", sqlca.sqlerrm.sqlerrmc);    logOra(sErrLog, szMsg);#endif    EXEC SQL WHENEVER SQLERROR CONTINUE; 	onError();	return 1;sql_error2:	EXEC SQL CLOSE C2;	Unlock();	pOut->nFlag = SQL_RET_ERROR;#ifdef LOG_ERROR	snprintf(szMsg, 512, "ORA:DbLCOMMSelect: %.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 + -