这是我第一次体验OCCI,所以如果答案显而易见,请原谅。
我有一个Statement对象,以通常的方式创建:
string sqlStatement = "INSERT INTO data_tab VALUES(:id, :name, :number, :when)";
m_stmt = m_conn->createStatement(sqlStatement);
m_stmt->setMaxIterations(100);
然后我需要遍历一些我应该插入数据库的对象:
for(size_t i = 0; i < data.size(); ++i)
{
m_stmt->setInt(1, i);
try {
m_stmt->setString(2, data[i].client());
}
catch(SQLException& e)
{
cerr << "setString(): " << e.what();
exit(1);
}
m_stmt->setDouble(3, data[i].number());
m_stmt->setDate(4, data[i].when());
// ...
// Checks if maxIterations is lesser than data size,
// oteherwise calls executeUpdate and other kind of
// boilerplate code.
// ...
m_stmt->addIteration();
}
但代码在setString方法中使用以下输出borks:
setString(): ORA-32132: maximum iterations cannot be changed
我相信我应该得到这个错误是我在setXXX方法之后调用setMaxIterations但是我没有这样做。我做错了什么?
答案 0 :(得分:3)
您应在设置可变长度参数之前调用setMaxParamSize()
:
m_stmt->setMaxParamSize(2, 1000) // or whatever is the max length of your string.