Название: Qt ODBC + MS SQL: прерывается выполнение хранимой процедуры Отправлено: Странник от Август 03, 2011, 13:40 доброго времени суток.
Windows, Qt 4.7.3, ODBC3 драйвер, MS SQL Server 2005. столкнулись со следующей аномалией. имеется хранимая процедура выгрузки данных из БД. работает давно и без проблем. возникла необходимость вызывать ее с помощью QSqlQuery, и вот тут зарылся северный пушистый зверек. процедура в норме выполняется пару минут, но QSqlQuery::exec() возвращает true уже через десяток секунд. QSqlQuery::lastError(), соответственно, чист. в трассировке драйвера тоже никаких ошибок. тем не менее, выполнение процедуры прерывается на середине. вопрос философский: что сие значит? куда копать, кого душить? буду благодарен за любые наводки, советы, случаи из практики. p.s. забыл указать, процедура якобы успешно завершается на уровне драйвера Код: EXIT SQLExecute with return code 0 (SQL_SUCCESS) p.p.s. грабля найдена, процедура возвращает множественные результирующие наборы. при отключении вывода все работает. если кто успеет подсказать, что с этим можно сделать - не расстроюсь = ) Название: Re: Qt ODBC + MS SQL: прерывается выполнение хранимой процедуры Отправлено: White Owl от Август 16, 2011, 17:02 QSqlQuery::nextResult()
поможет в случае множественных резалтсетов. Название: Re: Qt ODBC + MS SQL: прерывается выполнение хранимой процедуры Отправлено: Странник от Август 16, 2011, 22:10 нет, проблема не в том, что я не могу результат получить - процедура преждевременно завершается.
Название: Re: Qt ODBC + MS SQL: прерывается выполнение хранимой процедуры Отправлено: White Owl от Август 18, 2011, 17:58 А почему ты считаешь что она завершается? Она не завершается а приостанавливается чтобы отдать первый резалтсет. Вытяни его, потом запроси следующий, процедура продолжится.
Название: Re: Qt ODBC + MS SQL: прерывается выполнение хранимой процедуры Отправлено: Странник от Август 20, 2011, 12:40 А почему ты считаешь что она завершается? Она не завершается а приостанавливается чтобы отдать первый резалтсет. Вытяни его, потом запроси следующий, процедура продолжится. потому что трассировка показывает:Код: EXIT SQLExecute with return code 0 (SQL_SUCCESS) |