Функция JetDupCursor
Применимо к: Windows | Windows Server
Функция JetDupCursor
Функция JetDupCursor дублирует открытый курсор и возвращает дескриптор повторяющегося курсора. Если курсор, который был дублирован, был курсором только для чтения, то дублированный курсор также является курсором только для чтения. Любое состояние, связанное с построением ключа поиска или обновлением записи, не копируется в повторяющийся курсор. Кроме того, расположение исходного курсора не дублируется в повторяющийся курсор. Повторяющийся курсор всегда открывается в кластеризованном индексе, а его расположение всегда находится в первой строке таблицы.
JET_ERR JET_API JetDupCursor(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__out JET_TABLEID* ptableid,
__in JET_GRBIT grbit
);
Параметры
sesid
Сеанс, используемый для этого вызова.
tableid
Курсор, используемый для этого вызова.
ptableid
Указатель на tableid.
grbit
Зарезервировано для последующего использования.
Возвращаемое значение
Эта функция возвращает тип данных JET_ERR с одним из следующих кодов возврата. Дополнительные сведения о возможных ошибках ESE см. в разделах Ошибки подсистемы расширяемого хранилища и Параметры обработки ошибок.
Код возврата |
Описание |
---|---|
JET_errSuccess |
Операция выполнена успешно. |
JET_errClientRequestToStopJetService |
Невозможно выполнить операцию, так как все действия экземпляра, связанного с сеансом, прекратились в результате вызова JetStopService. |
JET_errInstanceUnavailable |
Невозможно выполнить операцию, так как экземпляр, связанный с сеансом, столкнулся с неустранимой ошибкой, требующей отмены доступа ко всем данным для защиты целостности этих данных. Эта ошибка будет возвращена только в Windows XP и более поздних выпусках. |
JET_errNotInitialized |
Невозможно выполнить операцию, так как экземпляр, связанный с сеансом, еще не инициализирован. |
JET_errOutOfCursors |
Нет доступных ресурсов курсора. |
JET_errRestoreInProgress |
Невозможно выполнить операцию, так как операция восстановления выполняется в экземпляре, связанном с сеансом. |
JET_errSessionSharingViolation |
Один и тот же сеанс нельзя использовать одновременно для нескольких потоков. Эта ошибка будет возвращена только в Windows XP и более поздних выпусках. |
JET_errTermInProgress |
Невозможно выполнить операцию, так как экземпляр, связанный с сеансом, завершает работу. |
При успешном выполнении для ptableid устанавливается повторяющийся курсор.
В случае сбоя изменения не вносятся. Состояние tableid не изменяется.
Комментарии
В дублированном курсоре копируется не все состояние курсора. Расположение повторяющегося курсора, включая текущий индекс, обычно отличается от заданного курсора. Повторяющийся курсор всегда возвращается в кластеризованном индексе и в первой строке таблицы. Если таблица пуста, повторяющийся курсор не находится ни в одной строке.
Таблицы, открытые с помощью JetDupCursor , обычно должны закрываться с помощью JetCloseTable. Исключение из этого правила возникает, когда в транзакции вызывается JetDupCursor и выполняется откат транзакции (с помощью JetRollback). При откате транзакции курсор автоматически закрывается. В этом случае при закрытии таблицы с помощью JetCloseTable возникает ошибка.
Количество таблиц, которые можно открыть одновременно, напрямую зависит от JET_paramMaxOpenTables. Дополнительные сведения см. в разделе Системные параметры .
Требования
Требование | Значение |
---|---|
Клиент |
Требуется Windows Vista, Windows XP или Windows 2000 Профессиональная. |
Сервер |
Требуется Windows Server 2008, Windows Server 2003 или Windows 2000 Server. |
Верхняя часть |
Объявлено в Esent.h. |
Библиотека |
Используйте ESENT.lib. |
DLL |
Требуется ESENT.dll. |
См. также:
JET_GRBIT
JET_SESID
JET_TABLEID
JetCloseTable
JetRollback
JetStopService
Системные параметры