2013-08-08 3 views
4

Эти компоненты имеют возможность извлекать несколько наборов результатов (например, из хранимой процедуры) за один раз, а с помощью D5 я могу успешно использовать NextRecordSet для получения второго и последующих из Sql-сервера ,TAdoDataSet, множество наборов результатов TAdoStoredProc

Однако, это только работает, если я укажу местоположение курсора как clClient; если я использую clServer, я получаю ошибку «Не возвращать несколько результирующих наборов». Является ли это неотъемлемым ограничением (например, наложенным уровнем MDac на клиенте) или может ли множество наборов записей быть успешно извлечено с помощью курсора на стороне сервера?

ответ

3

Это неотъемлемое ограничение для серверных курсоров. Как указано в следующих MSDN link:

Серверные курсоры не могут быть использованы с утверждениями, которые генерируют более один набор записей.

Это ограничение распространяется на все утверждения, описанные в разделе «Генерация ». Множество записей. Для получения дополнительной информации см. Generating Multiple Recordsets. Если курсор используется сервер с любым утверждением, что генерирует несколько наборов записей, приложение может вернуть одно из следующих ошибок:

  • Невозможно открыть курсор на хранимую процедуре, которая имеет ничего, кроме одного ЗЕЬЕСТА в Это.
  • sp_cursoropen. Параметр оператора может быть только одним оператором SELECT или хранимой процедурой.
Смежные вопросы