Показать сообщение отдельно
Старый 03.12.2010, 14:47   #1  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Update ошибка в ODBC Oracle
Добрый день.

Давно столкнулся с ошибкой, которую не могу решить, правда обошел, но очень некрасиво.

Попытки выполнить любое обновление данных в Оракл через ODBC драйвер выдают ошибку:
PHP код:
Cannot select a record in  (). The SQL database has issued an error.
SQL error description: [Oracle][ODBC]Invalid cursor state.
SQL statementUPDATE "TN_ITEMS" SET "CN_PART_STATUS" '5' WHERE "CN_ID" '70926' AND "STATE" '3' 
В итоге запись все же обновляется, но ошибка приводит к прерыванию.

Менял параметры для createStatement, но безуспешно.
Выполнял код в DAX 4.0 SP2 та же ошибка и в DAX2009 SP1. ОС Win XP (32) и Win 7 (64). Пробовал и с драйвером от Оракла, ничего не изменилось. Версия Оракл на сервере 9.0. У пользователь для ODBC есть все права.

Вот тестовый джоб.
X++:
static server void ODBC_Oracle(Args _args)
{
    OdbcConnection                  odbc;
    LoginProperty                   lp;
    Statement                       stmt;
    ResultSet                       res;
    str                             expr;
    SqlStatementExecutePermission   ssep;
;
    lp = new LoginProperty();
    lp.setOther('Driver={Microsoft ODBC for Oracle};Dbq=liv;Uid=user;Pwd=pass;');
//    lp.setOther('Driver={Oracle in OraClient11g_home1};Dbq=liv;Uid=user;Pwd=pass;');

    odbc = new ODBCConnection(lp);

    if(odbc)
    {
        stmt = odbc.createStatement(ResultSetType::KeysetDriven, ResultSetConcurrency::Updatable);

        expr = "UPDATE \"TN_ITEMS\" SET \"CN_PART_STATUS\" = '5' WHERE \"CN_ID\" = '70926' AND \"STATE\" = '3'";
        
        ssep = new SqlStatementExecutePermission(expr);
        ssep.assert();

        res = stmt.executeQuery(expr);

        if (res)
        {
            res.next();
        }
        CodeAccessPermission::revertAssert();
    }
}
Буду благодарен любым идеям.

Последний раз редактировалось Link; 03.12.2010 в 14:53.