开发者

Inserting multiple rows in an Oracle database with OCCI

开发者 https://www.devze.com 2023-02-01 18:19 出处:网络
This is my first experience so OCCI so I beg your pardon if the answer is obvious. I have a Statement object, created the usual way:

This is my first experience so OCCI so I beg your pardon if the answer is obvious.

I have a Statement object, created the usual way:

string sqlStatement = "INSERT INTO data_tab VALUES(:id, :name, :number, :when)";
m_stmt = m_conn->createStatement(sqlStatement);

m_stmt->setMaxIterations(100);

Then I need to loop over a few objects that I should insert into the开发者_运维问答 database:

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();
}

But the code borks in the setString method with the following output:

setString(): ORA-32132: maximum iterations cannot be changed

I believe I should get this error is I call setMaxIterations after a setXXX method but I don't do this. What I am doing wrong?


You should invoke setMaxParamSize() prior to setting a variable length parameter:

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

精彩评论

暂无评论...
验证码 换一张
取 消