📄 ogtpl.cpp
字号:
#include "oradb.h"#include "Base64.h"int DbGTPInsert(struct S_GTPL* pIn, struct S_RESULT* pOut){ char szMsg[512]; char szSQL[SQLMAX]; int i=0; char SeqId[LEN_SEQ + 1]; char TableName2[LEN_TABLENAME + 1]; int nRecordType=pIn->RecordType; char *szContent=(char *)pIn->Content; int nContentLength=pIn->ContentLength; int nFlagCancel=pIn->FlagCancel; char *szGsnId=(char *)pIn->GsnId; char *TableName=(char *)pIn->TableName; unsigned int PeerIp=pIn->PeerIp; unsigned int PeerSeqId=pIn->PeerSeqId; int nCgType=pIn->CgType; char szSQL2[SQLMAX];/* EXEC SQL BEGIN DECLARE SECTION; EXEC SQL VAR SeqId IS STRING(LEN_SEQ + 1); EXEC SQL VAR TableName2 IS STRING(LEN_TABLENAME + 1); EXEC SQL END DECLARE SECTION; /* EXEC SQL WHENEVER SQLERROR GOTO sql_error; EXEC SQL SELECT SEQ_OGTPL.NEXTVAL INTO :SeqId FROM DUAL;*/ /* PART 2 INSERT STATEMENT */ snprintf(szSQL, SQLMAX, "INSERT INTO %s (" "RECORDTYPE,CONTENT,CONTENTLENGTH,FLAGCANCEL," "DATECREATE,GSNID,PEERIP,PEERSEQID) VALUES(" "%d,'%s',%d,%d," "CURDATE(),'%s',%u,%u)", TableName, nRecordType,szContent,nContentLength,nFlagCancel, szGsnId,PeerIp,PeerSeqId);/* snprintf(szSQL, SQLMAX, "INSERT INTO %s (" "RECORDTYPE,SEQID,CONTENT,CONTENTLENGTH,FLAGCANCEL," "DATECREATE,GSNID,PEERIP,PEERSEQID,CGTYPE) VALUES(" "%d,SEQ_OGTPL.NEXTVAL,'%s',%d,%d," "SYSDATE,'%s',%u,%u)", TableName, nRecordType,szContent,nContentLength,nFlagCancel,szGsnId,PeerIp,PeerSeqId);*/ #ifdef _DEBUG logOra(sErrLog, szSQL);#endif int res = mysql_real_query(myConnect, szSQL, strlen(szSQL)); Lock(); if(res != 0) {// printf("%d %s\n", mysql_errno(myConnect), mysql_error(myConnect)); Unlock(); logOra(sErrLog, "%d %s\n", mysql_errno(myConnect), mysql_error(myConnect)); return -1; } Unlock();/* snprintf(szSQL2, SQLMAX, "INSERT INTO %s (" "RECORDTYPE,SEQID,CONTENT,CONTENTLENGTH,FLAGCANCEL," "DATECREATE,GSNID,PEERIP,PEERSEQID,CGTYPE,TRYTIMES) VALUES(" ":x1,SEQ_OGTPL.NEXTVAL,:x2,:x3,:x4," "SYSDATE,:x4,:x5,:x6,:x7,0)", TableName);#ifdef _DEBUG logOra(sErrLog, szSQL2);#endif Lock(); EXEC SQL EXECUTE BEGINEXECUTE IMMEDIATE :szSQL2 using :nRecordType, :szContent,:nContentLength,:nFlagCancel, :szGsnId,:PeerIp,:PeerSeqId,:nCgType;SELECT SEQ_OGTPL.CURRVAL INTO :SeqId FROM DUAL;COMMIT; END; END-EXEC; Unlock(); pOut->nFlag = SQL_OK; memcpy(pOut->SeqId, SeqId, 20); memcpy(pOut->TableName, TableName, 30); pOut->nFlag = SQL_OK; return 0;sql_error: Unlock(); pOut->nFlag = SQL_RET_ERROR;#ifdef LOG_ERROR snprintf(szMsg, 512, "ORA:DbOGTPInsert: %.70s", sqlca.sqlerrm.sqlerrmc); logOra(sErrLog, szMsg);#endif EXEC SQL WHENEVER SQLERROR CONTINUE; onError();notfound: */ return 0;}int DbGTPSelect(char* pInSzTableName, char* szInSeqId, int* RecordType, char* szOutContent, char* szOutSeqId, int* nPeerIp, int *nFlagCancel){ char szMsg[512]; char TableName[LEN_TABLENAME + 1]; int nRecordType; int nContentLength; int nFlagCancel2; unsigned int nPeeIp2; char szSQL[SQLMAX]; short id;/* EXEC SQL BEGIN DECLARE SECTION; EXEC SQL VAR szOutSeqId IS STRING(LEN_SEQ + 1); EXEC SQL VAR szOutContent IS STRING(4000); EXEC SQL END DECLARE SECTION; */ snprintf(szSQL, SQLMAX, "SELECT SEQID,CONTENT,RECORDTYPE,PEERIP,FLAGCANCEL " "FROM %s WHERE SEQID>'%s'", pInSzTableName, szInSeqId);/* snprintf(szSQL, SQLMAX, "SELECT COUNT(*) " "FROM %s", pInSzTableName);*/#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 PREPARE stat FROM :szSQL; EXEC SQL DECLARE C1_GTP CURSOR FOR stat; EXEC SQL OPEN C1_GTP; EXEC SQL WHENEVER NOT FOUND goto notfound; EXEC SQL FETCH C1_GTP INTO :szOutSeqId:id, :szOutContent:id, :nRecordType:id, :nPeeIp2:id, :nFlagCancel2:id; *RecordType = nRecordType; *nPeerIp = nPeeIp2; *nFlagCancel = nFlagCancel2; EXEC SQL CLOSE C1_GTP; Unlock(); return 0;notfound: EXEC SQL CLOSE C1_GTP; Unlock(); return 2;sql_error: EXEC SQL CLOSE C1_GTP;#ifdef LOG_ERROR snprintf(szMsg, 512, "ORA:DbOGTPInsert: %.70s", sqlca.sqlerrm.sqlerrmc); logOra(sErrLog, szMsg);#endif Unlock();*/ return 3;}int DbGTPCount(char* pInSzTableName, long inIPeerIp, long inIPeerSeqId, long *nOutCount){ char szMsg[512]; char TableName[LEN_TABLENAME + 1]; char szSQL[SQLMAX]; short id; int nCount; snprintf(szSQL, SQLMAX, "SELECT COUNT(*) " "FROM %s WHERE PEERIP='%u' AND PEERSEQID='%u'", pInSzTableName, (unsigned long)inIPeerIp, (unsigned long)inIPeerSeqId);#ifdef _DEBUG logOra(sErrLog, szSQL);#endif Lock();/* EXEC SQL WHENEVER SQLERROR GOTO sql_error; EXEC SQL PREPARE stat FROM :szSQL; EXEC SQL DECLARE C1_GTP2 CURSOR FOR stat; EXEC SQL OPEN C1_GTP2; EXEC SQL WHENEVER NOT FOUND goto notfound; EXEC SQL FETCH C1_GTP2 INTO :nCount:id; EXEC SQL CLOSE C1_GTP2;*/ Unlock(); *nOutCount = nCount; return 0;/*notfound: EXEC SQL CLOSE C1_GTP2; Unlock(); return 2;sql_error: EXEC SQL CLOSE C1_GTP2; Unlock(); return 3; */}int DbGTPSelect2(long inIPeerIp, long inIPeerSeqId, char *pInSzTableName, int *nRecordType, char *szOutContent, char *szOutSeqId){ char szMsg[512]; char TableName[LEN_TABLENAME + 1]; int nRecordType2; char szOutContent2[4000]; char szOutSeqId2[LEN_SEQ]; char szSQL[SQLMAX]; short id;/* EXEC SQL BEGIN DECLARE SECTION; EXEC SQL VAR szOutSeqId2 IS STRING(LEN_SEQ + 1); EXEC SQL VAR szOutContent2 IS STRING(4000); EXEC SQL END DECLARE SECTION; */ snprintf(szSQL, SQLMAX, "SELECT RECORDTYPE,SEQID,CONTENT " "FROM %s WHERE PEERIP='%u' AND PEERSEQID='%u' ORDER BY SEQID DESC", pInSzTableName, (unsigned long)inIPeerIp, (unsigned long)inIPeerSeqId);#ifdef _DEBUG logOra(sErrLog, szSQL);#endif Lock();/* EXEC SQL WHENEVER SQLERROR GOTO sql_error; EXEC SQL PREPARE stat FROM :szSQL; EXEC SQL DECLARE C1_GTP4 CURSOR FOR stat; EXEC SQL OPEN C1_GTP4; EXEC SQL WHENEVER NOT FOUND goto notfound; EXEC SQL FETCH C1_GTP4 INTO :nRecordType2:id, :szOutSeqId2:id, :szOutContent2:id; *nRecordType = nRecordType2; memcpy(szOutContent, szOutContent2, 4000); memcpy(szOutSeqId, szOutSeqId2, LEN_SEQ); EXEC SQL CLOSE C1_GTP4;*/ Unlock(); return 0;/*notfound: EXEC SQL CLOSE C1_GTP4; Unlock(); return 2;sql_error: EXEC SQL CLOSE C1_GTP4; Unlock();#ifdef LOG_ERROR snprintf(szMsg, 512, "ORA:DbGTPSelect2: %.70s", sqlca.sqlerrm.sqlerrmc); logOra(sErrLog, szMsg);#endif*/ return 3;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -