使用OCCI在Oracle数据库中插入多行

时间:2010-12-28 17:06:13

标签: c++ oracle

这是我第一次体验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但是我没有这样做。我做错了什么?

1 个答案:

答案 0 :(得分:3)

您应在设置可变长度参数之前调用setMaxParamSize()

m_stmt->setMaxParamSize(2, 1000) // or whatever is the max length of your string.