Поделиться через


sp_cursor_list (Transact-SQL)

Область применения: SQL Server

Представляет атрибуты серверных курсоров, открытых на данный момент для соединения.

Соглашения о синтаксисе Transact-SQL

Синтаксис

sp_cursor_list
    [ @cursor_return = ] cursor_return OUTPUT
    , [ @cursor_scope = ] cursor_scope
[ ; ]

Аргументы

[ @cursor_return = ] cursor_return OUTPUT

Имя объявленной переменной курсора. @cursor_return — это параметр OUTPUT типа CURSOR. Этот аргумент является динамическим, прокручиваемым и предназначенным только для чтения.

[ @cursor_scope = ] cursor_scope

Определяет, какие уровни курсоров включаются в отчет. @cursor_scope является int, без значения по умолчанию и может быть одним из этих значений.

значение Описание
1 Представить все локальные курсоры.
2 Представить все глобальные курсоры.
3 Представить как локальные, так и глобальные курсоры.

Значения кода возврата

Нет.

Возвращенные курсоры

sp_cursor_list возвращает отчет как выходной параметр курсора Transact-SQL, а не в результирующем наборе. Это позволяет пакетам Transact-SQL, хранимым процедурам и триггерам работать с выходными данными по одной строке одновременно. Это также означает, что процедура не может вызываться непосредственно из функций API базы данных. Выходной параметр курсора должен быть привязан к переменной программы, но API базы данных не поддерживают параметры курсора привязки или переменные.

Это формат курсора, возвращаемого sp_cursor_list. Формат курсора совпадает с форматом sp_describe_cursor, возвращаемым .

Имя столбца Тип данных Description
reference_name sysname Имя, используемое для ссылки на курсор. Если ссылка на курсор была через имя, заданное в DECLARE CURSOR инструкции, имя ссылки совпадает с именем курсора. Если ссылка на курсор осуществлялась при помощи переменной, именем ссылки является имя переменной курсора.
cursor_name sysname Имя курсора из инструкции DECLARE CURSOR . В SQL Server, если курсор был создан путем установки переменной курсора на курсор, cursor_name возвращает имя переменной курсора. В предыдущих версиях этот выходной столбец возвращает имя, сформированное системой.
cursor_scope smallint 1 = LOCAL
2 = GLOBAL
status smallint Те же значения, что и системная CURSOR_STATUS функция:

1 = курсор, на который ссылается имя курсора или переменная, открыт. Если курсор не учитывается, статический или набор ключей, это по крайней мере одна строка. Если курсор динамический, результирующий набор имеет ноль или более строк.

0 = курсор, на который ссылается имя или переменная курсора, открыт, но не имеет строк. Динамические курсоры не возвращают это значение.

-1 = курсор, на который ссылается имя курсора или переменная, закрывается.

-2 = применяется только к переменным курсора. Для переменной не назначен курсор. Возможно, OUTPUT параметр назначил курсор переменной, но хранимая процедура закрыла курсор перед возвратом.

-3 = курсор или переменная курсора с указанным именем не существует, или в переменной курсора нет выделенного курсора.
model smallint 1 = нечувствительный (или статический)
2 = набор ключей
3 = Dynamic
4= Быстрая прокрутка
concurrency smallint 1 = только для чтения
2 = блокировки прокрутки
3 = оптимистичный
scrollable smallint 0 = только пересылка
1 = прокручиваемая
open_status smallint 0 = закрыто
1 = Открыть
cursor_rows int Количество уточняющих строк в результирующем наборе. Дополнительные сведения см. в @@CURSOR_ROWS.
fetch_status smallint Состояние последней выборки по данному курсору. Дополнительные сведения см. в @@FETCH_STATUS:

0 = успешное получение.
-1 = сбой получения или выходит за пределы курсора.
-2 = запрошенная строка отсутствует.
-9 = на курсоре не было получения.
column_count smallint Количество столбцов в результирующем наборе курсора.
row_count smallint Количество строк, затронутых последней операцией с курсором. Дополнительные сведения см. в @@ROWCOUNT.
last_operation smallint Последняя операция, выполненная с данным курсором.

0 = на курсоре не выполнялись никаких операций.
1 = OPEN
2 = FETCH
3 = INSERT
4 = UPDATE
5 = DELETE
6 = CLOSE
7 = DEALLOCATE
cursor_handle int Уникальное значение, определяющее курсор в пределах области сервера.

Замечания

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

  • Курсоры Transact-SQL Server.

  • Курсоры сервера API, открытые приложением ODBC, которое затем вызывается SQLSetCursorName для имени курсора.

Используйте sp_describe_cursor_columns для описания атрибутов результирующий набор, возвращаемый курсором. Используется sp_describe_cursor_tables для отчета базовых таблиц, на которые ссылается курсор. sp_describe_cursor сообщает те же сведения, что sp_cursor_listи только для указанного курсора.

Разрешения

Разрешения на выполнение по умолчанию принадлежат роли public .

Примеры

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

USE AdventureWorks2022;
GO

-- Declare and open a keyset-driven cursor.
DECLARE abc CURSOR KEYSET
FOR
SELECT LastName
FROM Person.Person
WHERE LastName LIKE 'S%';

OPEN abc;

-- Declare a cursor variable to hold the cursor output variable
-- from sp_cursor_list.
DECLARE @Report CURSOR;

-- Execute sp_cursor_list into the cursor variable.
EXEC master.dbo.sp_cursor_list
    @cursor_return = @Report OUTPUT,
    @cursor_scope = 2;

-- Fetch all the rows from the sp_cursor_list output cursor.
FETCH NEXT from @Report;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
    FETCH NEXT from @Report;
END

-- Close and deallocate the cursor from sp_cursor_list.
CLOSE @Report;
DEALLOCATE @Report;
GO

-- Close and deallocate the original cursor.
CLOSE abc;
DEALLOCATE abc;
GO