OCI scrollable курсор
От: x-artem  
Дата: 24.08.07 06:33
Оценка:
товарищи, нужна помощь

при получении данных после запроса при очередном фетче может возникнуть ошибка из-за "плохих" данных в блоке(например значение поля превышает выделенный под колонку размер буфера), т е дальнейшее чтение невозможно, если не использовать scrollable курсор. а нужно читать дальше(именно так, а не приводить в соответствие код и схему базы)

мне нужно уметь комбинировать при обработке данных оба этих курсора.
1. сначала используем обычный курсор(он быстрее)
2. как только попался блок с плохими данными, выполняем запрос заново, но с использованием scrollable курсора:
ВОПРОС: как это правильно сделать ?
можно ли на уже подготовленном и выполненном statement для обычного курсора просто выполнить запрос с использованием scrollable курсора ?
или для этого нужно полностью заново подгатавливать statement?

При попытке использовать scrollable курсор одним из способов нарываюсь на ошибку ORA-01001 при попытке фетча после получения блока плохих данных. описание ошибки то мне известно, но откуда в данном случае растут ноги и как енто побороть, не знаю.

код выполнения запроса со scrollable курсором:

nResult = OCIStmtExecute(m_Cursor.m_Session.get_svc(), m_Cursor.stmthp, m_Cursor.m_Session.get_error(),
0 /*rows to fetch*/, 0, 0, 0, OCI_STMT_SCROLLABLE_READONLY);

код при выполнении фетча:

sword nResult = OCIStmtFetch2(m_Cursor.stmthp, m_Cursor.m_Session.get_error(), nRows2FetchAtOnce,
OCI_FETCH_ABSOLUTE, m_nAbsolutePosition/*pos to fetch from*/, OCI_DEFAULT);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.