Операция DML над курсором в Oracle OCI или OCCI - PullRequest
0 голосов
/ 12 июня 2018

Я пытался обновить столбец на курсоре в наборе результатов после выполнения запроса.Другими словами, я пытаюсь добиться следующего типа запроса в Oracle через OCI / OCCI:

update [таблица] set [column_name] = [значение] где текущий [курсор]

На сервере MS-SQL это можно сделать, а через ODBC это можно сделать и в Oracle.Но, похоже, он не поддерживается Oracle через OCI или OCCI.Я нашел только следующую выдержку в документе:

Oracle не поддерживает операции DML на прокручиваемых курсорах.

Я не знаю, что именно это означает:означает, что не поддерживается только для прокручиваемого курсора или вообще не поддерживается.

Я не уверен, поддерживает ли сервер Oracle использование запроса where current of [cursor name].ODBC API для получения имени курсора - SQLGetCursorName(), но в Oracle его нет.

Пример:

env = Environment::createEnvironment();
conn = env->createConnection(username, password, connectionString);
Statement* stmt = conn->createStatement("select id, name, last_update_date from table1 where id in (1,2,3,4,5)");
ResultSet* rs = stmt->executeQuery();
while (rs->next())
{
    if (rs->getInt(1) == 3)
    {
        //Update the last_update_date column to the current timestamp
    }
}

//Resource cleanup

Спасибо всем!

...