?? lcloc.cpp
字號:
#include "oradb.h"int DbLCLOCInsert(struct S_LCLOC* pIn, struct S_RESULT* pOut){ char szMsg[512]; char* TableName = (char*)pIn->TableName; char* SeqId = (char*)pIn->SeqId; char* LocationAreaCode = (char*)pIn->LocationAreaCode; char* RoutingAreaCode = (char*)pIn->RoutingAreaCode; char* CellIdentity = pIn->CellIdentity; char* ChangeTime = pIn->ChangeTime; char* SortId = pIn->SortId; int i=0; char szSQL[SQLMAX];/* snprintf(szSQL, SQLMAX, "INSERT INTO %s (" "SEQID," "LOCATIONAREACODE," "ROUTINGAREACODE," "CELLIDENTITY," "CHANGETIME" ") VALUES(" "'%s','%s','%s','%s',TO_DATE('%s','YYYYMMDDHH24MISS'))", TableName, SeqId, LocationAreaCode, RoutingAreaCode, CellIdentity, ChangeTime );*/ snprintf(szSQL, SQLMAX, "INSERT INTO %s (" "LOCATIONAREACODE," "ROUTINGAREACODE," "CELLIDENTITY," "SORTID," "CHANGETIME" ") VALUES(" "'%s','%s','%s',%s,'%s')", TableName, LocationAreaCode, RoutingAreaCode, CellIdentity, SortId, ChangeTime );#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, :LocationAreaCode, :RoutingAreaCode, :CellIdentity, :ChangeTime, :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:DbLCLOCInsert: %.70s", sqlca.sqlerrm.sqlerrmc); logOra(sErrLog, szMsg);#endif EXEC SQL WHENEVER SQLERROR CONTINUE; onError();*/ return 1;}int DbLCLOCSelect(char* pInSzTableName, char* pInSzSeqId, struct S_LCLOC** pOutLChangeLocation, int * number, struct S_RESULT* pOut){ char szMsg[512]; char SeqId[LEN_SEQ + 1]; char LocationAreaCode[5]; char RoutingAreaCode[9]; char CellIdentity[5]; char ChangeTime[LEN_DATETIME + 1]; 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 LocationAreaCode IS STRING(4+1); EXEC SQL VAR RoutingAreaCode IS STRING(8+1); EXEC SQL VAR CellIdentity IS STRING(4+1); EXEC SQL VAR ChangeTime IS STRING(LEN_DATETIME+1); EXEC SQL END DECLARE SECTION; struct S_LCLOC *pLCLOC = *pOutLChangeLocation; int nNumber = 0; char szSQL[SQLMAX]; char szSQL2[SQLMAX]; struct S_LCLOC* p2; int j; char * sz ; short id[5]; *number = 0; if(pLCLOC != NULL) { return -1; } snprintf(szSQL2, SQLMAX, "SELECT COUNT(*) FROM %s WHERE SEQID=%s", pInSzTableName, pInSzSeqId); snprintf(szSQL, SQLMAX, "SELECT SEQID,LOCATIONAREACODE, ROUTINGAREACODE, CELLIDENTITY, " "TO_CHAR(CHANGETIME,'YYYYMMDDHH24MISS')," "SORTID " "FROM %s WHERE SEQID=%s", pInSzTableName, pInSzSeqId);#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_LCLOC CURSOR FOR stat2; EXEC SQL OPEN C2_LCLOC; EXEC SQL WHENEVER NOT FOUND goto notfound2; EXEC SQL FETCH C2_LCLOC INTO :nNumber; EXEC SQL CLOSE C2_LCLOC; if(nNumber <= 0) { Unlock(); * number = 0; return 0; } sz = malloc(SIZE_S_LCLOC*nNumber); memset(sz, 0, SIZE_S_LCLOC*nNumber); EXEC SQL WHENEVER SQLERROR GOTO sql_error; EXEC SQL PREPARE stat FROM :szSQL; EXEC SQL DECLARE C1_LCLOC CURSOR FOR stat; EXEC SQL OPEN C1_LCLOC; EXEC SQL WHENEVER NOT FOUND goto notfound; #ifdef _DEBUG logOra(sErrLog, "CURSOR...");#endif for(j=0;j<nNumber;j++) { EXEC SQL FETCH C1_LCLOC INTO :SeqId, :LocationAreaCode:id[0], :RoutingAreaCode:id[1], :CellIdentity:id[2], :ChangeTime:id[3], :SortId:id[0]; p2 = (struct S_LCLOC*)&sz[SIZE_S_LCLOC*j]; memcpy(p2->SeqId, SeqId, 20); memcpy(p2->LocationAreaCode, LocationAreaCode, 4); memcpy(p2->RoutingAreaCode, RoutingAreaCode, 8); memcpy(p2->CellIdentity, CellIdentity, 4); memcpy(p2->ChangeTime, ChangeTime, LEN_DATETIME); memcpy(p2->SortId, SortId, LEN_SORT); memcpy(p2->TableName, pInSzTableName, LEN_TABLENAME); } * pOutLChangeLocation = (struct S_LCLOC*)sz; * number = nNumber;notfound: EXEC SQL CLOSE C1_LCLOC; Unlock(); pOut->nFlag = SQL_OK; return 0;notfound2: EXEC SQL CLOSE C2_LCLOC; Unlock(); return 0;sql_error: EXEC SQL CLOSE C1_LCLOC; Unlock(); pOut->nFlag = SQL_RET_ERROR;#ifdef LOG_ERROR snprintf(szMsg, 512, "ORA:DbLCLOCSelect: %.70s", sqlca.sqlerrm.sqlerrmc); logOra(sErrLog, szMsg);#endif EXEC SQL WHENEVER SQLERROR CONTINUE; onError(); return 1;sql_error2: EXEC SQL CLOSE C2_LCLOC; Unlock(); pOut->nFlag = SQL_RET_ERROR;#ifdef LOG_ERROR snprintf(szMsg, 512, "ORA:DbLCLOCSelect: %.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 + -