Skip to content

29. Курсоры Transact SQL

Pandas edited this page Jan 2, 2018 · 1 revision

Операции в реляционной базе данных выполняются над множеством строк. Например, набор строк, возвращаемый инструкцией 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

Clone this wiki locally