C++下Oracle数据库开发的问题(OTL)
时间:2011-10-24
来源:互联网
请问下C++下的oracle开发使用OTL技术能像下面代码这样使用吗??主要是能像下面那样嵌套访问数据库吗?我在plsql developer下面直接执行这条SELECT 语句有数据出来,但放在代码里面,代码跑到这个位置就没有数据。请大家帮我看看,谢谢
try
{
strSql = "SELECT DISTINCT s.SCENE_ID, s.SCENE_TYPE, s.SCENE_NAME, s.REGEX_RULE, s.XDR_TYPE, s.TIME_SCOPE_FUNC, s.TIME_SCOPE_VALUE, s.KEY_FIELD, s.DATA_FIELD ";
strSql += " FROM HIGHQUOTA_SCENE_INFO s, HIGHQUOTA_CFG_INFO c ";
strSql += " WHERE s.SCENE_ID = c.SCENE_ID AND c.CFG_NAME = :cfg_name<char[50]> ";
strSql += " order by s.SCENE_ID ";
otl_stream otlCur2(1, strSql.c_str(), m_db);
otlCur2.set_commit(0);
otlCur2 << szConfigFile;
while(!otlCur2.eof())
{
otlCur2 >> nSceneId;
CSceneInfo* pSceneInfo = g_runningInfo.getScene(i);
otlCur2 >> pSceneInfo->m_strSceneType;
otlCur2 >> pSceneInfo->m_strSceneName;
otlCur2 >> pSceneInfo->m_strRegexRule;
otlCur2 >> pSceneInfo->m_strXdrType;
otlCur2 >> pSceneInfo->m_strTmFuncType;
otlCur2 >> pSceneInfo->m_strTmFuncValue;
otlCur2 >> pSceneInfo->m_strXdrKey;
otlCur2 >> pSceneInfo->m_strXdrDate;
string strSql2 = "SELECT COUNT(*) FROM HIGHQUOTA_CONDITION_INFO WHERE SCENE_ID = :scene_id<int>";
otl_stream otlCur3(1, strSql2.c_str(), m_db);
otlCur3.set_commit(0);
otlCur3 << nSceneId;
otlCur3 >> nCondCount;
pSceneInfo->initCondition(nCondCount);
strSql2 = "SELECT CONDITION_FUNC,CONDITION_THRESHOLD FROM HIGHQUOTA_CONDITION_INFO WHERE SCENE_ID = :scene_id<int>";
otl_stream otlCur4(1, strSql2.c_str(), m_db);
otlCur4.set_commit(0);
otlCur4 << nSceneId;
while(!otlCur4.eof())
{
CConditionInfo* pConditionInfo = pSceneInfo->getCondition(j);
otlCur4 >> pConditionInfo->m_strFuncExpression;
otlCur4 >> pConditionInfo->m_strThreshold;
j++;
}
i++;
}
}
catch( otl_exception& e )
{
char szLog[256];
sprintf(szLog, "Fail to connect db! err:%s\n%s\n%s", e.msg, e.stm_text, e.var_info);
LogAppend(FATAL_LEVEL, "DebugInfo", szLog);
return RET_EXCEPTION;
}
m_db.commit();
m_db.logoff();
try
{
strSql = "SELECT DISTINCT s.SCENE_ID, s.SCENE_TYPE, s.SCENE_NAME, s.REGEX_RULE, s.XDR_TYPE, s.TIME_SCOPE_FUNC, s.TIME_SCOPE_VALUE, s.KEY_FIELD, s.DATA_FIELD ";
strSql += " FROM HIGHQUOTA_SCENE_INFO s, HIGHQUOTA_CFG_INFO c ";
strSql += " WHERE s.SCENE_ID = c.SCENE_ID AND c.CFG_NAME = :cfg_name<char[50]> ";
strSql += " order by s.SCENE_ID ";
otl_stream otlCur2(1, strSql.c_str(), m_db);
otlCur2.set_commit(0);
otlCur2 << szConfigFile;
while(!otlCur2.eof())
{
otlCur2 >> nSceneId;
CSceneInfo* pSceneInfo = g_runningInfo.getScene(i);
otlCur2 >> pSceneInfo->m_strSceneType;
otlCur2 >> pSceneInfo->m_strSceneName;
otlCur2 >> pSceneInfo->m_strRegexRule;
otlCur2 >> pSceneInfo->m_strXdrType;
otlCur2 >> pSceneInfo->m_strTmFuncType;
otlCur2 >> pSceneInfo->m_strTmFuncValue;
otlCur2 >> pSceneInfo->m_strXdrKey;
otlCur2 >> pSceneInfo->m_strXdrDate;
string strSql2 = "SELECT COUNT(*) FROM HIGHQUOTA_CONDITION_INFO WHERE SCENE_ID = :scene_id<int>";
otl_stream otlCur3(1, strSql2.c_str(), m_db);
otlCur3.set_commit(0);
otlCur3 << nSceneId;
otlCur3 >> nCondCount;
pSceneInfo->initCondition(nCondCount);
strSql2 = "SELECT CONDITION_FUNC,CONDITION_THRESHOLD FROM HIGHQUOTA_CONDITION_INFO WHERE SCENE_ID = :scene_id<int>";
otl_stream otlCur4(1, strSql2.c_str(), m_db);
otlCur4.set_commit(0);
otlCur4 << nSceneId;
while(!otlCur4.eof())
{
CConditionInfo* pConditionInfo = pSceneInfo->getCondition(j);
otlCur4 >> pConditionInfo->m_strFuncExpression;
otlCur4 >> pConditionInfo->m_strThreshold;
j++;
}
i++;
}
}
catch( otl_exception& e )
{
char szLog[256];
sprintf(szLog, "Fail to connect db! err:%s\n%s\n%s", e.msg, e.stm_text, e.var_info);
LogAppend(FATAL_LEVEL, "DebugInfo", szLog);
return RET_EXCEPTION;
}
m_db.commit();
m_db.logoff();
作者: x254609781 发布时间: 2011-10-24
哪句SELECT?看你代码里两处SELECT。
是第一处么?
是第一处么?
作者: yixilan 发布时间: 2011-10-24
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28