【发布时间】:2016-04-16 11:37:13
【问题描述】:
我是第一次使用 OCI,所以这可能是一个基本问题....我来自 MySql word.... 使用 VS2012 和 C++。
我希望在 WHERE 和 LIMIT 子句上做一个简单的 SELECT 语句。 SQL 查询是从 C++ 编写的处理器动态构建的,并且该语句已从该模块准备就绪。所以我可能有类似的东西:
SELECT * FROM MYTABLE3; 或
SELECT F1, F2, F3 FROM MYTABLE1; 甚至
SELECT F1, F3, F4 FROM MYTABLE2 WHERE ID > 10;
这里没什么大不了的。
我的问题是我事先不知道表格式,所以我无法在执行语句和获取表结构之前将变量绑定到它。在 MySql 中这很容易,因为我执行了语句并得到了结果集。从结果集中,我可以检查检索到的列数、名称、数据格式和每列的大小。读取该数据后,我使用表结构及其数据构建了一个动态矩阵,这是我的最终目标。比如:
sql::ResultSetMetaData *resultMeta = resultSet->getMetaData();
while (resultSet->next())
{
for (unsigned int i = 1; i <= resultMeta->getColumnCount(); i++)
{
std::string label = resultMeta->getColumnLabel(i);
std::string type = resultMeta->getColumnTypeName(i);
// ... Get the resultset attributes and data
}
retData.push_back(data);
}
根据我在 Oracle 中看到的情况,我需要在发出执行/获取操作之前绑定将要返回的变量。就我而言,我不能这样做,因为我事先不知道表结构......
我很确定 Oracle 可以做到这一点,我只是不知道该怎么做。我已经阅读了 Oracle Docs 并没有找到对它的引用....
非常感谢帮助和代码示例。我已经坚持了 2 天了...感谢您的帮助。
【问题讨论】:
标签: c++ c oracle oracle-call-interface