Я получаю следующее сообщение об ошибке оракула, когда мое приложение развертывается на сервере только, а не при запуске точно такой же исполняемый на моей локальной машине:ORA-01002: выборка из последовательности
Трассировка стека указывает на простой оператор выбора с объединением, который я могу успешно выполнить через TOAD локально и через SQL Plus на проблемном сервере.
Верхняя половина StackTrace является:
Oracle.DataAccess.Client.OracleException ORA-01002: fetch out of sequence
at Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck)
at Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, Object src, Boolean bCheck)
at Oracle.DataAccess.Client.OracleDataReader.Read()
at System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)
at System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
at System.Data.Common.DataAdapter.Fill(DataTable[] dataTables, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
at System.Data.Common.LoadAdapter.FillFromReader(DataTable[] dataTables, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
at System.Data.DataTable.Load(IDataReader reader, LoadOption loadOption, FillErrorEventHandler errorHandler)
at Reconciliation.Models.Legacy.EntityDbEnvironment.OpenEntity(String sql)
at Reconciliation.Models.Legacy.EntityDbEnvironment.Open(String& sql, DataTable& datatable)
**at myProject.Checks.ExecuteSql()**
Я могу только представить, это проблема клиента оракула, но там, где я должен смотреть, чтобы решить это?
Есть ли у вас автокоммит? Эта ошибка возникает, если вы пытаетесь извлечь курсор через фиксацию (вы не должны совершать внутри цикла курсора). –
@VincentMalgrat - Не то, чтобы мы верим, строка соединения точно такая же, но, возможно, это может быть установлено на клиенте oracle? –
Да, автокоммит может быть установлен только клиентом. Ошибка возникает не из самого SQL-запроса, а из-за неправильного использования курсора (выборка после последней строки возвращена, выборка после фиксации для курсора FOR UPDATE, выборка после перезаписи без повторного выполнения или выборка после отката). –