-
Notifications
You must be signed in to change notification settings - Fork 2
29. Курсоры Transact SQL
Операции в реляционной базе данных выполняются над множеством строк. Например, набор строк, возвращаемый инструкцией SELECT
, содержит все строки, которые удовлетворяют условиям, указанным в предложении WHERE
инструкции. Такой полный набор строк, возвращаемых инструкцией, называется результирующим набором. Приложения, особенно интерактивные, не всегда эффективно работают с результирующим набором как с единым целым. Им нужен механизм, позволяющий обрабатывать одну строку или небольшое их число за один раз. Курсоры являются расширением результирующих наборов, которые предоставляют такой механизм. Инструкции Microsoft SQL Server создают полный результирующий набор, но бывают случаи, когда результаты удобнее обрабатывать построчно. Открытие курсора на результирующем наборе делает возможной его построчную обработку. Можно назначить курсору переменную или параметр с типом данных cursor.
Курсоры позволяют усовершенствовать обработку результатов:
- позиционируясь на отдельные строки результирующего набора;
- получая одну или несколько строк от текущей позиции в результирующем наборе;
- поддерживая изменение данных в строках в текущей позиции результирующего набора;
- поддерживая разные уровни видимости изменений, сделанных другими пользователями для данных, представленных в результирующем наборе;
- предоставляя инструкциям Transact-SQL в скриптах, хранимых процедурах и триггерах доступ к данным результирующего набора.
Операции с курсором поддерживаются в таких инструкциях:
close, CREATE PROCEDURE, DEALLOCATE, DECLARE CURSOR DECLARE @локальная_переменная, delete, FETCH, OPEN, UPDATE, SET
Следующие системные функции и системные хранимые процедуры также поддерживают курсоры:
@@CURSOR_ROWS, CURSOR_STATUS, @@FETCH_STATUS, sp_cursor_list sp_describe_cursor, sp_describe_cursor_columns, sp_describe_cursor_tables