📄 ora8api_linux.cpp
字号:
g_ora8API.OCIDefineArrayOfStruct = (OCIDefineArrayOfStruct_t)dlsym(g_hORA8DLL, "OCIDefineArrayOfStruct"); assert(g_ora8API.OCIDefineArrayOfStruct != NULL);
g_ora8API.OCIStmtFetch = (OCIStmtFetch_t)dlsym(g_hORA8DLL, "OCIStmtFetch"); assert(g_ora8API.OCIStmtFetch != NULL);
g_ora8API.OCIStmtGetBindInfo = (OCIStmtGetBindInfo_t)dlsym(g_hORA8DLL, "OCIStmtGetBindInfo"); assert(g_ora8API.OCIStmtGetBindInfo != NULL);
g_ora8API.OCIDescribeAny = (OCIDescribeAny_t)dlsym(g_hORA8DLL, "OCIDescribeAny"); assert(g_ora8API.OCIDescribeAny != NULL);
g_ora8API.OCIParamGet = (OCIParamGet_t)dlsym(g_hORA8DLL, "OCIParamGet"); assert(g_ora8API.OCIParamGet != NULL);
g_ora8API.OCIParamSet = (OCIParamSet_t)dlsym(g_hORA8DLL, "OCIParamSet"); assert(g_ora8API.OCIParamSet != NULL);
g_ora8API.OCITransStart = (OCITransStart_t)dlsym(g_hORA8DLL, "OCITransStart"); assert(g_ora8API.OCITransStart != NULL);
g_ora8API.OCITransDetach = (OCITransDetach_t)dlsym(g_hORA8DLL, "OCITransDetach"); assert(g_ora8API.OCITransDetach != NULL);
g_ora8API.OCITransCommit = (OCITransCommit_t)dlsym(g_hORA8DLL, "OCITransCommit"); assert(g_ora8API.OCITransCommit != NULL);
g_ora8API.OCITransRollback = (OCITransRollback_t)dlsym(g_hORA8DLL, "OCITransRollback"); assert(g_ora8API.OCITransRollback != NULL);
g_ora8API.OCITransPrepare = (OCITransPrepare_t)dlsym(g_hORA8DLL, "OCITransPrepare"); assert(g_ora8API.OCITransPrepare != NULL);
g_ora8API.OCITransForget = (OCITransForget_t)dlsym(g_hORA8DLL, "OCITransForget"); assert(g_ora8API.OCITransForget != NULL);
g_ora8API.OCIErrorGet = (OCIErrorGet_t)dlsym(g_hORA8DLL, "OCIErrorGet"); assert(g_ora8API.OCIErrorGet != NULL);
g_ora8API.OCILobAppend = (OCILobAppend_t)dlsym(g_hORA8DLL, "OCILobAppend"); assert(g_ora8API.OCILobAppend != NULL);
g_ora8API.OCILobAssign = (OCILobAssign_t)dlsym(g_hORA8DLL, "OCILobAssign"); assert(g_ora8API.OCILobAssign != NULL);
g_ora8API.OCILobCharSetForm = (OCILobCharSetForm_t)dlsym(g_hORA8DLL, "OCILobCharSetForm"); assert(g_ora8API.OCILobCharSetForm != NULL);
g_ora8API.OCILobCharSetId = (OCILobCharSetId_t)dlsym(g_hORA8DLL, "OCILobCharSetId"); assert(g_ora8API.OCILobCharSetId != NULL);
g_ora8API.OCILobCopy = (OCILobCopy_t)dlsym(g_hORA8DLL, "OCILobCopy"); assert(g_ora8API.OCILobCopy != NULL);
g_ora8API.OCILobDisableBuffering = (OCILobDisableBuffering_t)dlsym(g_hORA8DLL, "OCILobDisableBuffering"); assert(g_ora8API.OCILobDisableBuffering != NULL);
g_ora8API.OCILobEnableBuffering = (OCILobEnableBuffering_t)dlsym(g_hORA8DLL, "OCILobEnableBuffering"); assert(g_ora8API.OCILobEnableBuffering != NULL);
g_ora8API.OCILobErase = (OCILobErase_t)dlsym(g_hORA8DLL, "OCILobErase"); assert(g_ora8API.OCILobErase != NULL);
g_ora8API.OCILobFileClose = (OCILobFileClose_t)dlsym(g_hORA8DLL, "OCILobFileClose"); assert(g_ora8API.OCILobFileClose != NULL);
g_ora8API.OCILobFileCloseAll = (OCILobFileCloseAll_t)dlsym(g_hORA8DLL, "OCILobFileCloseAll"); assert(g_ora8API.OCILobFileCloseAll != NULL);
g_ora8API.OCILobFileExists = (OCILobFileExists_t)dlsym(g_hORA8DLL, "OCILobFileExists"); assert(g_ora8API.OCILobFileExists != NULL);
g_ora8API.OCILobFileGetName = (OCILobFileGetName_t)dlsym(g_hORA8DLL, "OCILobFileGetName"); assert(g_ora8API.OCILobFileGetName != NULL);
g_ora8API.OCILobFileIsOpen = (OCILobFileIsOpen_t)dlsym(g_hORA8DLL, "OCILobFileIsOpen"); assert(g_ora8API.OCILobFileIsOpen != NULL);
g_ora8API.OCILobFileOpen = (OCILobFileOpen_t)dlsym(g_hORA8DLL, "OCILobFileOpen"); assert(g_ora8API.OCILobFileOpen != NULL);
g_ora8API.OCILobFileSetName = (OCILobFileSetName_t)dlsym(g_hORA8DLL, "OCILobFileSetName"); assert(g_ora8API.OCILobFileSetName != NULL);
g_ora8API.OCILobFlushBuffer = (OCILobFlushBuffer_t)dlsym(g_hORA8DLL, "OCILobFlushBuffer"); assert(g_ora8API.OCILobFlushBuffer != NULL);
g_ora8API.OCILobGetLength = (OCILobGetLength_t)dlsym(g_hORA8DLL, "OCILobGetLength"); assert(g_ora8API.OCILobGetLength != NULL);
g_ora8API.OCILobIsEqual = (OCILobIsEqual_t)dlsym(g_hORA8DLL, "OCILobIsEqual"); assert(g_ora8API.OCILobIsEqual != NULL);
g_ora8API.OCILobLoadFromFile = (OCILobLoadFromFile_t)dlsym(g_hORA8DLL, "OCILobLoadFromFile"); assert(g_ora8API.OCILobLoadFromFile != NULL);
g_ora8API.OCILobLocatorIsInit = (OCILobLocatorIsInit_t)dlsym(g_hORA8DLL, "OCILobLocatorIsInit"); assert(g_ora8API.OCILobLocatorIsInit != NULL);
g_ora8API.OCILobRead = (OCILobRead_t)dlsym(g_hORA8DLL, "OCILobRead"); assert(g_ora8API.OCILobRead != NULL);
g_ora8API.OCILobTrim = (OCILobTrim_t)dlsym(g_hORA8DLL, "OCILobTrim"); assert(g_ora8API.OCILobTrim != NULL);
g_ora8API.OCILobWrite = (OCILobWrite_t)dlsym(g_hORA8DLL, "OCILobWrite"); assert(g_ora8API.OCILobWrite != NULL);
g_ora8API.OCIBreak = (OCIBreak_t)dlsym(g_hORA8DLL, "OCIBreak"); assert(g_ora8API.OCIBreak != NULL);
g_ora8API.OCIReset = (OCIReset_t)dlsym(g_hORA8DLL, "OCIReset"); // assert(g_ora8API.OCIReset != NULL);
g_ora8API.OCIServerVersion = (OCIServerVersion_t)dlsym(g_hORA8DLL, "OCIServerVersion"); assert(g_ora8API.OCIServerVersion != NULL);
g_ora8API.OCIAttrGet = (OCIAttrGet_t)dlsym(g_hORA8DLL, "OCIAttrGet"); assert(g_ora8API.OCIAttrGet != NULL);
g_ora8API.OCIAttrSet = (OCIAttrSet_t)dlsym(g_hORA8DLL, "OCIAttrSet"); assert(g_ora8API.OCIAttrSet != NULL);
g_ora8API.OCISvcCtxToLda = (OCISvcCtxToLda_t)dlsym(g_hORA8DLL, "OCISvcCtxToLda"); assert(g_ora8API.OCISvcCtxToLda != NULL);
g_ora8API.OCILdaToSvcCtx = (OCILdaToSvcCtx_t)dlsym(g_hORA8DLL, "OCILdaToSvcCtx"); assert(g_ora8API.OCILdaToSvcCtx != NULL);
g_ora8API.OCIResultSetToStmt = (OCIResultSetToStmt_t)dlsym(g_hORA8DLL, "OCIResultSetToStmt"); assert(g_ora8API.OCIResultSetToStmt != NULL);
// 8.1.x (8i) calls
g_ora8API.OCIEnvCreate = (OCIEnvCreate_t)dlsym(g_hORA8DLL, "OCIEnvCreate");
g_ora8API.OCIDurationBegin = (OCIDurationBegin_t)dlsym(g_hORA8DLL, "OCIDurationBegin");
g_ora8API.OCIDurationEnd = (OCIDurationEnd_t)dlsym(g_hORA8DLL, "OCIDurationEnd");
g_ora8API.OCILobCreateTemporary = (OCILobCreateTemporary_t)dlsym(g_hORA8DLL, "OCILobCreateTemporary");
g_ora8API.OCILobFreeTemporary = (OCILobFreeTemporary_t)dlsym(g_hORA8DLL, "OCILobFreeTemporary");
g_ora8API.OCILobIsTemporary = (OCILobIsTemporary_t)dlsym(g_hORA8DLL, "OCILobIsTemporary");
}
static void ResetAPI()
{
// 8.0.x calls
g_ora8API.OCIInitialize = NULL;
g_ora8API.OCIHandleAlloc = NULL;
g_ora8API.OCIHandleFree = NULL;
g_ora8API.OCIDescriptorAlloc = NULL;
g_ora8API.OCIDescriptorFree = NULL;
g_ora8API.OCIEnvInit = NULL;
g_ora8API.OCIServerAttach = NULL;
g_ora8API.OCIServerDetach = NULL;
g_ora8API.OCISessionBegin = NULL;
g_ora8API.OCISessionEnd = NULL;
g_ora8API.OCILogon = NULL;
g_ora8API.OCILogoff = NULL;
g_ora8API.OCIPasswordChange = NULL;
g_ora8API.OCIStmtPrepare = NULL;
g_ora8API.OCIBindByPos = NULL;
g_ora8API.OCIBindByName = NULL;
g_ora8API.OCIBindObject = NULL;
g_ora8API.OCIBindDynamic = NULL;
g_ora8API.OCIBindArrayOfStruct = NULL;
g_ora8API.OCIStmtGetPieceInfo = NULL;
g_ora8API.OCIStmtSetPieceInfo = NULL;
g_ora8API.OCIStmtExecute = NULL;
g_ora8API.OCIDefineByPos = NULL;
g_ora8API.OCIDefineObject = NULL;
g_ora8API.OCIDefineDynamic = NULL;
g_ora8API.OCIDefineArrayOfStruct = NULL;
g_ora8API.OCIStmtFetch = NULL;
g_ora8API.OCIStmtGetBindInfo = NULL;
g_ora8API.OCIDescribeAny = NULL;
g_ora8API.OCIParamGet = NULL;
g_ora8API.OCIParamSet = NULL;
g_ora8API.OCITransStart = NULL;
g_ora8API.OCITransDetach = NULL;
g_ora8API.OCITransCommit = NULL;
g_ora8API.OCITransRollback = NULL;
g_ora8API.OCITransPrepare = NULL;
g_ora8API.OCITransForget = NULL;
g_ora8API.OCIErrorGet = NULL;
g_ora8API.OCILobAppend = NULL;
g_ora8API.OCILobAssign = NULL;
g_ora8API.OCILobCharSetForm = NULL;
g_ora8API.OCILobCharSetId = NULL;
g_ora8API.OCILobCopy = NULL;
g_ora8API.OCILobDisableBuffering = NULL;
g_ora8API.OCILobEnableBuffering = NULL;
g_ora8API.OCILobErase = NULL;
g_ora8API.OCILobFileClose = NULL;
g_ora8API.OCILobFileCloseAll = NULL;
g_ora8API.OCILobFileExists = NULL;
g_ora8API.OCILobFileGetName = NULL;
g_ora8API.OCILobFileIsOpen = NULL;
g_ora8API.OCILobFileOpen = NULL;
g_ora8API.OCILobFileSetName = NULL;
g_ora8API.OCILobFlushBuffer = NULL;
g_ora8API.OCILobGetLength = NULL;
g_ora8API.OCILobIsEqual = NULL;
g_ora8API.OCILobLoadFromFile = NULL;
g_ora8API.OCILobLocatorIsInit = NULL;
g_ora8API.OCILobRead = NULL;
g_ora8API.OCILobTrim = NULL;
g_ora8API.OCILobWrite = NULL;
g_ora8API.OCIBreak = NULL;
g_ora8API.OCIReset = NULL;
g_ora8API.OCIServerVersion = NULL;
g_ora8API.OCIAttrGet = NULL;
g_ora8API.OCIAttrSet = NULL;
g_ora8API.OCISvcCtxToLda = NULL;
g_ora8API.OCILdaToSvcCtx = NULL;
g_ora8API.OCIResultSetToStmt = NULL;
// 8.1.x (8i) calls
g_ora8API.OCIEnvCreate = NULL;
g_ora8API.OCIDurationBegin = NULL;
g_ora8API.OCIDurationEnd = NULL;
g_ora8API.OCILobCreateTemporary = NULL;
g_ora8API.OCILobFreeTemporary = NULL;
g_ora8API.OCILobIsTemporary = NULL;
}
void AddORA8Support()
{
if(!g_hORA8DLL)
{
// load Oracle OCI8 API library
g_hORA8DLL = ::dlopen(g_sORA8DLLName, RTLD_LAZY);
if(!g_hORA8DLL)
throw SAException(SA_Library_Error, -1, -1, IDS_LOAD_LIBRARY_FAILS, ::dlerror(), g_sORA8DLLName);
LoadAPI();
if(g_ora8API.OCIEnvCreate == NULL) // use 8.0.x method of initialization
g_ora8API.OCIInitialize(OCI_THREADED | OCI_OBJECT, NULL, NULL, NULL, NULL);
}
g_nORA8DLLRefs++;
}
void ReleaseORA8Support()
{
assert(g_nORA8DLLRefs > 0);
g_nORA8DLLRefs--;
if(!g_nORA8DLLRefs)
{
ResetAPI();
// dlclose(g_hORA8DLL);
g_hORA8DLL = NULL;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -