sp_cursor_list (Transact-SQL)
Представляет атрибуты серверных курсоров, открытых на данный момент для соединения.
Синтаксические обозначения в Transact-SQL
Синтаксис
sp_cursor_list [ @cursor_return = ] cursor_variable_name OUTPUT
, [ @cursor_scope = ] cursor_scope
Аргументы
- [ @cursor_return = ] cursor_variable_nameOUTPUT
Имя переменной объявленного курсора. Аргумент cursor_variable_name имеет тип cursor и не имеет значения по умолчанию. Этот аргумент является динамическим, перемещаемым и предназначенным только для чтения.
[ @cursor_scope = ] cursor_scope
Указывает уровень курсоров для отчета. Аргумент cursor_scope имеет тип int, не имеет значения по умолчанию и может иметь одно из следующих значений.Значение Описание 1
Представить все локальные курсоры.
2
Представить все глобальные курсоры.
3
Представить как локальные, так и глобальные курсоры.
Значения кодов возврата
Нет
Замечания
Хранимая процедура sp_cursor_list представляет список текущих серверных курсоров, открытых соединением, и описывает атрибуты, являющиеся глобальными по отношению к каждому курсору, такие как возможность прокрутки и обновления курсора. Курсоры, представленные в хранимой процедуре sp_cursor_list, включают:
- серверные курсоры Transact-SQL;
- серверные курсоры API, открывающиеся приложением ODBC, которое затем называется SQLSetCursorName для именования курсора.
Используйте хранимую процедуру sp_describe_cursor_columns для описания атрибутов результирующего набора, возвращаемого курсором. Используйте хранимую процедуру sp_describe_cursor_tables для отчета по базовым таблицам, на которые ссылается курсор. Хранимая процедура sp_describe_cursor предоставляет такие же сведения, как и процедура sp_cursor_list, но только для определенного курсора.
Разрешения
Разрешение на выполнение по умолчанию для роли public.
Возвращаемые курсоры
Хранимая процедура 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 2005, если курсор создан с помощью присваивания переменной курсора, cursor_name возвращает имя переменной курсора. В предыдущих выпусках этот выходной столбец возвращает имя, созданное системой. |
cursor_scope |
smallint |
1 = LOCAL 2 = GLOBAL |
status |
smallint |
Те же значения, какие представлены системной функцией CURSOR_STATUS. 1 = курсор, указанный ссылкой в имени или переменной курсора, открыт. Если курсор нечувствительный, статичный или является набором ключей, он имеет, по крайней мере, одну строку. Если курсор динамический, результирующий набор имеет ноль или более строк. 0 = курсор, указанный ссылкой в имени или переменной курсора, открыт, но не имеет строк. Динамические курсоры не возвращают это значение. -1 = курсор, указанный ссылкой в имени или переменной курсора, закрывается. -2 = применимо только к переменным курсора. Нет курсора, назначенного переменной. Возможно, параметр OUTPUT назначил курсор переменной, но хранимая процедура закрыла курсор перед возвратом. -3 = курсор или переменная курсора с заданным именем не существует либо переменной не выделен курсор. |
model |
smallint |
1 = нечувствительный (или статичный) 2 = набор ключей 3 = динамический 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
для получения отчета об атрибутах курсора.
USE AdventureWorks
GO
-- Declare and open a keyset-driven cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Contact
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)