sp_cursor_list (Transact-SQL)

Применимо к:SQL Server

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

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

Синтаксис

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

Аргументы

[ ] @cursor_return=cursor_variable_nameВЫХОДНЫЕ ДАННЫЕ
Имя объявленной переменной курсора. cursor_variable_name является курсором без значения по умолчанию. Этот аргумент является динамическим, прокручиваемым и предназначенным только для чтения.

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

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

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

None

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

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

Формат курсора, возвращаемого хранимой процедурой sp_cursor_list. Формат курсора такой же, как и формат, возвращаемый хранимой процедурой sp_describe_cursor.

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

2 = GLOBAL
состояние smallint Те же значения, какие представлены системной функцией CURSOR_STATUS.

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

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

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

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

-3 = курсор или переменная курсора с заданным именем не существует либо переменной не выделен курсор.
модель smallint 1 = нечувствительный (или статичный)

2 = набор ключей

3 = динамический

4 = перемотка вперед
параллелизм 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 = операции c курсором не выполнялись.

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  

См. также

Системные хранимые процедуры (Transact-SQL)