Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LektsiiNovye.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.92 Mб
Скачать

Курсоры базовой таблицы

Курсоры базовой таблицы – это курсоры самого нижнего уровня. Эти курсоры работают непосредственно с ядром хранилища данных и являются самими быстрыми. Курсоры базовой таблицы можно прокручивать вперед или назад с минимальными затратами производительности, а также обновлять.

Кроме того, курсор можно открыть непосредственно в индексе. Поддержка индексов позволяет упорядочивать строки в таблице, разрешать поиск по конкретным значениям и ограничивать строки на основании диапазона значений в индексе.

Курсоры базовой таблицы имеют динамическое членство. Это означает, что два курсора, открытые в одной таблице, могут сразу же видеть все вставки, удаления и изменения данных при условии, что оба они находятся в одной области транзакции. Поскольку курсоры базовой таблицы можно обновлять, клиент может воспользоваться подобным курсором для изменения нижележащих данных.

Курсоры базовой таблицы не могут представлять собой результат запроса. Такими курсорами не возвращаются результаты запросов, например SELECT * FROM <tablename>. Вместо этого используется один из поддерживаемых курсоров результатов запроса.

В следующем примере показано, как получить курсор базовой таблицы при помощи ADO .NET:

//Base Table Cursor cmd.CommandText = "tablename"; cmd.CommandType = CommandType.TableDirect; SqlCeResultSet rs = cmd.ExecuteResultSet(ResultSetOptions.Scrollable | ResultSetOptions.Updatable);

В следующем примере показано, как получить курсор индекса посредством ADO .NET:

cmd.CommandText = "tablename"; cmd.IndexName = "indexname"; cmd.CommandType = CommandType.TableDirect; SqlCeResultSet rs = cmd.ExecuteResultSet(ResultSetOptions.Scrollable | ResultSetOptions.Updatable);

Статические курсоры

Статический курсор, который в ранних версиях SQL Server назывался прокручиваемым курсором запросов, создаёт и сохраняет абсолютную копию результирующего набора. Результирующий набор заполняется только по мере необходимости. Статические курсоры поддерживают прокрутку назад и вперёд, но не обновления. Статические курсоры не видят внешних изменений нечувствительных данных. Результаты запроса остаются в кэше все время существования курсора. Хотя статические курсоры имеют больше функций, чем последовательные, они медленнее и требуют больше памяти. Рекомендуется использовать статические курсоры, только когда необходима прокрутка, но курсор набора ключей неприменим.

Ниже приведён пример получения статического курсора при помощи ADO.NET:

cmd.CommandText = "Select * from tablename"; SqlCeResultSet rs = cmd.ExecuteResultSet(ResultSetOptions.Scrollable | ResultSetOptions.Insensitive);

Последовательные курсоры

Последовательный курсор – это самый быстрый обновляемый курсор, который, однако, не поддерживает прокрутку. Он поддерживает лишь последовательное получение строк от начала до конца курсора. Строки не извлекаются из базы данных до их получения. Изменения всех инструкций INSERT, UPDATE и DELETE, сделанные текущим пользователем или зафиксированные другими пользователями и затрагивающие строки в результирующем наборе, становятся видимыми по мере их получения от курсора. Поскольку курсор нельзя прокручивать назад, изменения, внесенные в строки базы данных после получения строки, не видимы при использовании курсора.

Последовательные курсоры и последовательные курсоры «только для чтения» - это самые быстрые из основанных на запросах курсоров. Их следует применять в сценариях, где наиболее важным является скорость и объём памяти.

В следующем примере показано, как получить последовательный курсор посредством ADO .NET:

cmd.CommandText = "Select * from tablename"; SqlCeResultSet rs = cmd.ExecuteResultSet(ResultSetOptions.Updatable);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]