CURSOR– это набор строк, являющийся результатом выполнения запроса. В один момент времени доступна лишь одна строка (текущая), по курсору можно передвигаться и получать доступ к элементарным данным.
При объявлении курсора создается временная копия данных, которая сохраняется в БД tempdb.
Динамический курсор – данные в курсоре могут быть изменены.
Статический курсор – данные в курсоре не меняются.
Стандартный способ объявления курсора, синтаксис в обозначениях
[ FOR { READ ONLY | UPDATE [ OF column_name [ ,...n ] ] } ]
Примеры объявления курсоров:
DECLARE MyCursor1 CURSOR FOR (select * from Authors)
/*объявили курсор с названием MyCursor1, который содержит всю информацию об авторах, двигаться по нему можно только от первой записи вниз до последней. Курсор является динамическим.*/
DECLARE MyCursor1 INSENSITIVE CURSOR FOR (select * from Authors)
/*объявили курсор с названием MyCursor1, который содержит всю информацию об авторах, двигаться по нему можно только от первой записи вниз до последней. Курсор является статическим.*/
DECLARE MyCursor1 SCROLL CURSOR FOR (select * from Authors)
/*объявили курсор с названием MyCursor1, который содержит всю инфор-
мацию об авторах, двигаться по нему можно в любом направлении. Курсор является динамическим.*/
DECLARE MyCursor1 INSENSITIVE SCROLL CURSOR FOR (select * from
Authors)
/*объявили курсор с названием MyCursor1, который содержит всю инфор-
мацию об авторах, двигаться по нему можно в любом направлении. Курсор является статическим.*/
DECLARE MyCursor1 CURSOR FOR (select * from Authors) FOR READ
ONLY
/*объявили курсор с названием MyCursor1, который содержит всю инфор-
мацию об авторах, двигаться по нему можно только от первой записи вниз до последней. Курсор является динамическим. Данные доступны только для чтения.*/
DECLARE MyCursor1 CURSOR FOR (select * from Authors) FOR UPDATE
/*объявили курсор с названием MyCursor1, который содержит всю инфор-
мацию об авторах, двигаться по нему можно только от первой записи вниз до последней. Курсор является динамическим. Данные курсора можно менять.*/