Sql

Курсоры sql: Курсоры в Mysql. / Хабр

Содержание

Курсоры (Cursors)

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

Пользователю доступны следующие способы выполнения запроса к базе данных:

  • Неявные курсоры — простой оператор SELECT … INTO извлекает одну строку данных непосредственно в переменные локальной программы. Это удобный (и часто наиболее эффективный) способ доступа к данным, использование которого, однако, может приводить к необходимости повторного кодирования оператора SELECT (или похожих операторов) в нескольких местах программы.
  • Явные курсоры — вы можете явно объявить курсов в разделе объявлений (локального блока или пакета). В этом случае курсор можно будет открывать и извлекать данные в одной или нескольких программах, причем возможности контроля будут шире, чем при использовании неявных курсоров.
  • Курсорные переменные — дополнительный уровень гибкости обеспечивают курсорные переменные (объявленные на основе типа REF CURSOR), которые позволяют передавать указатель на результирующее множество, полученное по запросу из одной программы в другую. Любая программа, имеющая доступ к такой переменной, сможет открывать и закрывать курсор, а также выбирать из него данные.
  • Курсорные выражения — появившиеся в версии Oracle 9i выражения CURSOR преобразуют оператор SELECT в указатель (типа REF CURSOR) на результирующее множество и могут использоваться в сочетании с табличными функциями для повышения прозводительности приложений.

Сравнение явных и неявных курсоров

В PL/SQL неявные курсоры – это курсоры, которые определяются в момент выполнения.

DECLARE
V_date DATE;
BEGIN
SELECT order_date
INTO v_date
FROM orders
WHERE order_number = 100;
END;

Явный курсор – это курсор, который определяется до начала выполнения.

DECLARE
CURSOR curs_get_od
IS
SELECT order_date
FROM orders
WHERE order_number = 100;
V_date DATE;
BEGIN
OPEN cure_get_od;
FETCH curs_get_od
INTO v_date;
CLOSE curs_get_od;
END;

Ключевое преимущество явного курсора заключается в наличии у него атрибутов, облегчающих применение условных операторов.

Типичные операции над запросами

Для исполнения оператора SQL внутри программы PL/SQL выполняет одни и те же операции для всех типов курсоров. В одних случаях PL/SQL выполняет их автоматически, а в других (для явных курсоров) программисту необходимо написать соответствующий код.

  • Синтаксический анализ — первым этапом обработки оператора SQL является его синтаксический анализ, который проводится для проверки корректности оператора и определения плана его выполнения.
  • Связывание — это сопоставление значений из вашей программы (хост-переменных) заполнителям используемого оператора SQL. Для статического SQL такое связывание выполняет само ядро PL/SQL. Для динамического SQL программист, если он планирует использовать переменные связывания, должен явно запросить выполнение этой операции.
  • Открытие — при открытии курсора, переменные связывания используются для определения результирующего множества команды SQL. Указатель активной (текущей) строки устанавливается на первой строке. В некоторых случаях явное открытие курсора не требуется; ядро PL/SQL само выполняет эту операцию (например, для неявных курсоров или встроенного динамического SQL).
  • Исполнение — на этапе исполнения оператор выполняется внутри ядра SQL.
  • Выборка
    — при выполнении запроса команда FETCH извлекает следующую строку из результирующего множества курсора. При каждой выборке PL/SQL передвигает курсор вреперд на одну строку по результирующему множеству. При работе с явными курсорами следует помнить, что в случае, когда строк для извлечения больше нет, FETCH ничего не делает (не инициирует исключение).
  • Закрытие — на этом этапе курсор закрывается, освобождается используемая им память. После закрытия курсор уже не содержит результирующее множество. В некоторых случаях явное закрытие курсора не требуется, ядро PL/SQL само выполняет эту операцию (например, для неявных курсоров или встроенного динамического SQL

Повторное использование курсоров

Скомпилированная версия курсора может использоваться повторно во избежание расходов на разбор и повторную компиляцию.

Полный и частичный разбор

Процесс компиляции нового курсора называется полным разбором. Упрощенно данный процесс может быть представлен четырьмя этапами:

  • Проверка – курсор проверяется на соответствие синтаксическим правилам SQL, также проверяются объекты (таблицы и столбцы), на которые он ссылается.
  • Компиляция – курсор компилируется в исполняемый код и загружается в разделяемый пул сервера баз данных. Для определения местоположения курсора в разделяемом пуле используется его адрес.
  • Вычисление плана выполнения – оптимизатор по стоимости (cost-based optimizer — CBO) Oracle определяет наилучший для данного курсора план выполнения и присоединяет его к курсору.
  • Вычисление хеша – ASCII-значения всех символов курсора складываются и передаются в функцию хеширования. Эта функция рассчитывает значение, по которому курсор легко может быть найден при повторном обращении. Данное значение называется хеш-значением курсора.

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

  • 1 Рассчитать сумму ASCII – значений всех символов курсора ( исключая переменные связывания).
  • 2 Применить алгоритм хеширования к полученной сумме.
  • 3 Проверить наличие в разделяемом пуле курсора с таким же значением хеша.
  • 4 Если такой курсор найден, он может быть использован повторно.

Курсоры. Типы курсоров в Т-SQL

Похожие презентации:

Базы данных и язык SQL

Базы данных. Access

Базы данных. Системы управления базами данных

Базы данных. Access 2007

Язык SQL

Системы управления базами данных (СУБД)

SQL. Базовый курс

Управление данными

Базы данных. Введение

Системы управления базами данных (СУБД)

1. Курсоры

2. Курсоры

Курсор — это результирующий набор данных, сформированный
сервером базы данных, в котором можно выполнять операции над
отдельными строками.
Курсоры могут быть реализованы на различных уровнях
на уровне T-SQL — используются внутри ХП, триггеров и
сценариев:
на уровне API — в интерфейсах доступа к БД (ODBC, OLE
DB и др.) и используются в приложениях как
специальные объекты.
Курсоры создаются на базе оператора SELECT

3. Типы курсоров в Т-SQL

Курсоры различаются по предоставляемым возможностям
(моделям поведения)
В T-SQL имеются следующие типы курсоров
Статические курсоры (snapshot cursor)
Динамические курсоры (dynamic cursor)
Последовательные курсоры (forward-only cursor)
Ключевые курсоры (keyset cursor)

4.

Статические курсоры Т-SQLСтатические курсоры – это копия строк, выбранных из таблиц по
запросу и размещенных в системной базе tempdb.
При открытии курсора устанавливаются блокировки
на все строки, включаемые в набор
Изменения, вносимые в выбранные строки курсора
другими пользователями, не отражаются в курсоре
Вносить изменения в курсор нельзя, он считывается в
режиме «только чтение»

5. Динамические курсоры Т-SQL

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

6. Последовательные курсоры Т-SQL

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

7. Ключевые курсоры Т-SQL

Ключевые курсоры – это набор уникальных ключей,
размещенных в системной базе tempdb и определяющих строки
запроса, по которым производится доступ к данным в таблицах
При обращении к строке курсора производится блокировка
соответствующих строки в соответствующих таблицах
Изменения, вносимые другими пользователями в строки
курсора после его открытия, в курсоре отражаются,
добавленные строки — не отображаются, а удаленные строки
будут показываются как поврежденные
Вносить изменения в курсор нельзя, он считывается в
режиме «только чтение»

8. Управление курсорами Т-SQL

При работе с курсором выполняются следующие
операции:
1. Создание (объявление) курсора
2. Открытие (заполнение данными) курсора
3. Выборка данных из курсора
4. Изменение данных в курсоре (если позволяет тип)
5. Закрытие курсора (отключение данных)
6. Удаление курсора

9. Создание курсора в Т-SQL

DECLARE cursor_name CURSOR
[ LOCAL | GLOBAL ]
[ FORWARD_ONLY | SCROLL ]
[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
[ TYPE_WARNING ]
FOR select_statement
[ FOR UPDATE [ OF column_name [ ,…n ] ] ]
Параметры
Не все параметры
совместимы между собой,
например,
SCROLL_LOCKS и
FAST_FORWARD,
FAST_FORWARD и
SCROLL или FOR_UPDATE
LOCAL – локальный курсор, видимый только внутри триггера, ХП
GLOBAL– глобальный курсор, существующий до закрытия соединения
FORWARD_ONLY – последовательный курсор
SCROLL– просматриваемый в любых направлениях курсор
STATIC, KEYSET, DYNAMIC, FAST_FORWARD – тип курсора
READ_ONLY– курсор только для чтения
SCROLL_LOCKS– курсор для изменения
OPTIMISTIC – блокирует изменение и удаление строк в БД после
открытия курсора
FOR UPDATE– курсор для изменения

10.

Открытие курсора в Т-SQLOPEN { [ GLOBAL ] cursor_name | cursor_variable_name }
Количество строк в открытом курсоре сохраняется в глобальной
переменной @@CURSOR_ROWS (n – количество строк в наборе, -n –
курсор загружается и на текущий момент загружено n строк, 0 – нет строк, -1 –
курсор динамический и количество строк неизвестно)

11. Получение данных курсора в Т-SQL

FETCH [ [ NEXT | PRIOR | FIRST | LAST | ABSOLUTE { n | @nvar }
| RELATIVE { n | @nvar } ]
FROM ] { [ GLOBAL ] cursor_name | @cursor_variable_name }
[ INTO @variable_name [ ,…n ] ]
Имя курсора
Параметры
Переменные, к которые заносятся
считываемые значения
NEXT | PRIOR – чтение следующей (предыдущей) строки за текущей
(после открытия курсора указатель находиться над 1-й строкой)
FIRST | LAST – выбирается 1-я (последняя) строка и она же становиться
текущей
ABSOLUTE – выбирается n-я cтрока от начала (если n – положительное)
или от конца (если n – отрицательное) набора
RELATIVE – выбирается cтрока, находящаяся через n строк от текущей
Состояние выполнения последней команды FETCH сохраняется в
глобальной переменной @@FETCH_STATUS (0 – успешная выборка,
-1 – выход за пределы результирующего набора, и т. д. )

12. Изменение данных курсора в Т-SQL

UPDATE table_name
SET column_name = { expression | DEFAULT | NULL }
WHERE CURRENT OF [ GLOBAL ] cursor_name
Имя курсора
DELETE [ FROM ] { table_name
WHERE CURRENT OF [ GLOBAL ] cursor_name

13. Закрытие курсора в Т-SQL

CLOSE { [ GLOBAL ] cursor_name | cursor_variable_name }

14. Удаление курсора в Т-SQL

DELOCATE { [ GLOBAL ] cursor_name | cursor_variable_name }

15. Схема БД «Заказы»

16. Пример курсора в Т-SQL

CREATE FUNCTION РасчетСтоимЗаказа (@КодЗаказа int)
RETURNS float
AS
BEGIN
DECLARE @СуммаЗаказа float, @СтоимостьТовара float
DECLARE cur CURSOR LOCAL FORWARD_ONLY STATIC
FOR
SELECT Количество*ЦенаПродажи FROM ЗаказаноТоваров
Состояние текущей команды FETCH:
WHERE ЗаказID= @КодЗаказа
0 – успешная выборка
OPEN cur
-1 – выход за пределы
SET @СуммаЗаказа = 0
результирующего набора
SET @СтоимостьТовара = 0
-2 — строка помечена как удаленная
FETCH NEXT FROM cur INTO @СтоимостьТовара

WHILE @@FETCH_STATUS = 0
-9 – выборка еще не производилась
BEGIN
SET @СуммаЗаказа = @СуммаЗаказа + @СтоимостьТовара
FETCH NEXT FROM cur INTO @СтоимостьТовара
END
CLOSE cur
DEALLOCATE cur
RETURN @СуммаЗаказа
END

17.

Пример курсора в Т-SQLCREATE PROC СтоимостьЗаказа
@КодЗаказа int
AS
if exists (SELECT * FROM Заказы
WHERE ЗаказID= @КодЗаказа and Состояние = ‘оформление’ )
UPDATE Заказы SET @ОбщаяСумма = РасчетСтоимЗаказа (@КодЗаказа)
WHERE ЗаказID= @КодЗаказа

18. Пример курсора в Т-SQL

CREATE PROC АннулированиеНеоплаченныхЗаказов
As
DECLARE @КодЗаказа int
DECLARE curКодыЗаказов CURSOR LOCAL STATIC Функция возвращает
FOR
разницу между 2-й и 1-й
SELECT ЗаказID FROM Заказы
датами в значениях,
указанных в 1-м параметре
WHERE Состояние = ‘оформление’ AND
DATEDIFF(day, ДатаЗаказа, Getdate()) >10
OPEN curКодыЗаказов
FETCH NEXT FROM curКодыЗаказов INTO @КодЗаказа
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC АннулированиеЗаказа @КодЗаказа
FETCH NEXT FROM curКодыЗаказов INTO @КодЗаказа
END
CLOSE curКодыЗаказов
DEALLOCATE curКодыЗаказов

19. Пример курсора в Т-SQL

CREATE PROC УдалениеЗаказовБезТоваров
As
DECLARE @КодЗаказа int
DECLARE curКодыЗаказов CURSOR LOCAL DYNAMIC
FOR
SELECT ЗаказID FROM Заказы
WHERE not Exists
(SELECT * FROM ЗаказаноТоваров
WHERE Заказы. ЗаказID = ЗаказаноТоваров.ЗаказID)
OPEN curКодыЗаказов
FETCH NEXT FROM curКодыЗаказов INTO @КодЗаказа
WHILE @@FETCH_STATUS = 0
Имя курсора
BEGIN
DELETE Заказы WHELE current of curКодыЗаказов
FETCH NEXT FROM curКодыЗаказов INTO @КодЗаказа
END
CLOSE curКодыЗаказов
DEALLOCATE curКодыЗаказов

English     Русский Правила

курсоров в SQL | Типы и жизненный цикл

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

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

Неявные курсоры

Неявные курсоры, как следует из названия, генерируются анализатором SQL для запросов DML. Запросы DML — это запросы на манипулирование данными. Эти запросы манипулируют данными или изменяют их. Они не мешают структуре или схеме базы данных. Такие запросы, как SELECT, INSERT, UPDATE и DELETE, генерируют неявный курсор. Неявные курсоры скрыты от конечного пользователя.

Явные курсоры

Явные курсоры — это курсоры, созданные пользователем. Когда пользователь указывает синтаксическому анализатору SQL создать курсор для активного набора, созданный таким образом курсор называется явным курсором. Активный набор определяется пользователем посредством запроса SELECT. В этой статье мы подробно рассмотрим явные курсоры.

Действия с курсором — жизненный цикл курсора

Жизненный цикл курсора обычно включает пять этапов:

1. Объявите:  Первый шаг — объявить курсор. Этот шаг дает системе указание сгенерировать курсор с заданным набором данных. Набор данных создается с помощью оператора SQL. На этом этапе создается активный набор, но временная рабочая область курсора еще не открыта в памяти.

2. Открыть:  Затем система получает указание открыть курсор. На этом этапе в память загружается временная рабочая область с активным набором и генерируется указатель, указывающий на первую строку в активном наборе.

3. Получение: Это повторяющийся шаг во всем процессе. Выбирается текущая строка указателя, и требуемая задача выполняется с данными строки. Указатель перемещается на следующую строку в курсоре.

4. Закрыть:  После завершения обработки данных курсор необходимо закрыть.

5. Освобождение:  Это последний шаг для удаления курсора и освобождения памяти, процессора и других системных ресурсов, выделенных для курсора.

Явные курсоры — в действии!

Итак, теперь у нас есть общее представление о том, что такое курсоры и как они работают. Пришло время запачкать руки и самим создать явный курсор.

Терминология курсоров в SQL

Давайте разберемся с терминологией, используемой в этом синтаксисе.

Область действия курсора
  • Область действия курсора может быть ГЛОБАЛЬНОЙ или ЛОКАЛЬНОЙ . Во всем соединении доступен глобальный курсор. Область действия локального курсора ограничена только хранимыми процедурами, функциями или запросом, содержащим курсор.
  • Это особенность MS SQL Server. MySQL поддерживает только локальные курсоры.
Движение курсора
  • MS SQL Server также дает возможность установить движение курсора. Это может быть либо обычный режим Forward_Only, который перемещает указатель от первой строки до последней строки. Или его можно прокрутить до первой, последней, предыдущей или следующей строки.
  • Курсоры в MySQL не прокручиваются.
Тип курсора
  • : Курсор может быть статическим, так как он может кэшировать активный набор до освобождения и может жонглировать вперед и назад через этот кэшированный активный набор. Курсор может быть fast_forward только в статическом режиме.
  • Также может быть динамическим, чтобы разрешить добавление или удаление строк в активном наборе, когда курсор открыт. Эти изменения не видны другим пользователям курсора в режиме набора ключей. Курсоры в MySQL доступны только для fast_forward.
Блокировка курсора
  • Блокировка курсора полезна в многопользовательской среде. Они блокируют строку, чтобы два пользователя не работали с одними и теми же данными одновременно. Это обеспечивает целостность данных.
  • Блокировка только для чтения указывает, что строка не может быть обновлена.
  • Блокировки прокрутки блокируют строку по мере ее выборки в курсоре, гарантируя успешное выполнение задачи и доступность обновленных данных за пределами курсора. Оптимистичные попытки обновить строку без какой-либо блокировки. Таким образом, если строка была обновлена ​​за пределами курсора, задача не будет выполнена.
  • MySQL поддерживает только блокировки только для чтения. Это означает, что MySQL не будет обновлять реальную таблицу; скорее, он будет копировать данные для выполнения команд обновления.

Таким образом, мы видим, что эти опции доступны только в MS SQL Server. Это делает синтаксис курсоров MySQL еще более простым.

Пример

Давайте теперь обновим зарплату сотрудников в нашей таблице Employee.

Мы будем использовать приведенные ниже данные в этих курсорах в примере SQL.

Наш код курсора будет следующим:

 DECLARE @sal float
DECLARE @newsal float
DECLARE Emp_Cur CURSOR FOR SELECT Salary, Updated_Salary FROM Employees
ОТКРЫТЬ
ПОЛУЧИТЬ СЛЕДУЮЩИЙ ОТ Emp_Cur В @sal, @newsal
ПОКА @@FETCH_STATUS = 0
НАЧИНАТЬ
SET @newsal = @sal*1.25
ОБНОВЛЕНИЕ Сотрудники SET Updated_Salary = @newsal ГДЕ ТЕКУЩИЙ ИЗ Emp_Cur
ПОЛУЧИТЬ СЛЕДУЮЩИЙ ОТ Emp_Cur В @sal, @newsal
КОНЕЦ
ЗАКРЫТЬ
DEALLOCATE Emp_Cur 

И вывод после выполнения вышеуказанной команды курсора будет:

Заключение — Курсоры в SQL

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

Рекомендуемые статьи

Мы надеемся, что эта информация EDUCBA о «Курсорах в SQL» была вам полезна. Вы можете просмотреть рекомендуемые статьи EDUCBA для получения дополнительной информации.

  1. Представления SQL
  2. Курсоры в PL/SQL
  3. Курсор в MySQL
  4. Курсоры в PostgreSQL

Курсор в SQL | Неявные и явные курсоры с примерами

Последнее обновление: 15 марта 2023 г. 12,2 тыс. просмотров


Swatee Chand Старший аналитик-исследователь в Edureka. Техно-фрик, который любит исследовать… Старший аналитик Edureka. Техно-фрик, который любит исследовать различные технологии. Любит следить за технологическими трендами на рынке и писать…

10 / 37 Блог из Введение в SQL

Стать сертифицированным специалистом

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

Ниже приведены темы, которые я буду обсуждать в этой статье:

  • Что такое курсор в SQL?
  • Типы курсоров SQL
  • Синтаксис курсора SQL
  • Жизненный цикл курсора

Что такое курсор в SQL?

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

Теперь, когда вы знакомы с тем, что такое курсор в SQL, давайте продолжим и рассмотрим его различные типы.

Типы курсоров SQL

SQL предоставляет два типа курсоров, которые я перечислил ниже:

  1. Неявный курсор , неявные курсоры генерируются автоматически и используются фреймворком. Эти типы курсоров используются для внутренней обработки и не могут управляться или ссылаться из другой области кода. Неявные курсоры в SQL просто удерживают затронутые операцией строки и могут ссылаться только на самый последний курсор, используя атрибуты курсора, которые показаны ниже в таблице.

    Атрибут Описание
    %найден. . В других случаях он вернет FALSE.
    %NOTFOUND Технически это противоположность атрибуту %FOUND. Он возвращает TRUE, если инструкция INSERT, UPDATE или DELETE не влияет ни на одну строку или инструкция SELECT INTO не возвращает ни одной строки. В противном случае он возвращает просто FALSE.
    %ISOPEN Этот атрибут всегда будет возвращать FALSE для неявных курсоров, поскольку курсор SQL автоматически закрывается сразу после выполнения связанного оператора SQL.
    %ROWCOUNT Возвращает общее количество затронутых строк оператором INSERT, UPDATE или DELETE или строк, возвращенных оператором SELECT INTO.
    1. Явный курсор

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

    Чтобы лучше понять курсор, давайте посмотрим, каков синтаксис курсора в SQL.

    Синтаксис курсора SQL

    Ниже приведен общий синтаксис для создания явного курсора.

     CURSOR cursorName IS selectStatement; 

    Здесь:

    cursorName – это допустимое имя для курсора

    selectStatement – это запрос на выборку, который вернет несколько строк.

    Жизненный цикл курсора

    Жизненный цикл курсора в SQL состоит из 5 основных этапов, которые я перечислил ниже: FOR selectStatement;

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

    1. Открыть
     ОТКРЫТЬ имя_курсора; 

    Этот шаг позволит вам открыть и заполнить курсор, выполнив его.

    1. Выбрать
     ВЫБРАТЬ СЛЕДУЮЩИЙ ОТ курсора В список переменных; 

    Этот шаг извлечет строку из курсора и сохранит ее в одной или нескольких переменных.

    [Необязательно] CheckStatus

     ПОКА @@FETCH_STATUS = 0
    НАЧИНАТЬ
    FETCH NEXT FROM имя_курсора;
    КОНЕЦ; 

    Эта функция возвращает состояние последней инструкции FETCH, которая была выполнена для курсора. Если эта функция возвращает 0, это означает, что операция FETCH прошла успешно. Чтобы получить все строки из курсора, используется предложение WHILE.

    1. Закрыть
     ЗАКРЫТЬ имя_курсора; 

    Этот шаг поможет вам закрыть курсор после завершения операций.

    1. Освобождение
     Освобождение имя_курсора; 

    Этот шаг поможет освободить курсор и освободить место в памяти.

    На этом я хотел бы завершить статью о курсорах в SQL. Я надеюсь, что эта статья помогла вам повысить ценность ваших знаний. Для получения дополнительной информации о SQL или базах данных вы можете обратиться к нашему полному списку литературы здесь:  Базы данных Эдурека .

     

    Основы SQL для начинающих | Изучайте SQL | Учебник по SQL для начинающих | Edureka

    Это видео Edureka «Основы SQL для начинающих» поможет вам понять основы SQL, а также запросы SQL, которые очень популярны и необходимы.

    Если вы хотите пройти структурированное обучение работе с MySQL, ознакомьтесь с нашим сертификационным курсом для администраторов баз данных MySQL , который включает в себя интерактивное обучение под руководством инструктора и реальный опыт работы над проектами.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *