CURSOR_STATUS (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Для данного параметра функция CURSOR_STATUS
сообщает, вернуло ли объявление курсора курсор и результирующий набор.
Соглашения о синтаксисе Transact-SQL
Синтаксис
CURSOR_STATUS
(
{ 'local' , 'cursor_name' }
| { 'global' , 'cursor_name' }
| { 'variable' , 'cursor_variable' }
)
Аргументы
'local'
Задает константу, показывающую, что источник курсора — это имя локального курсора.
'cursor_name'
Имя курсора. Имя курсора должно соответствовать требованиям, предъявляемым к идентификаторам базы данных.
'global'
Задает константу, показывающую, что источник курсора — это имя глобального курсора.
'variable'
Задает константу, показывающую, что источник курсора — это локальная переменная.
'cursor_variable'
Имя переменной курсора. Переменная курсора должна быть определена с типом данных cursor.
Типы возвращаемых данных
smallint
Возвращаемое значение | Имя курсора | Переменная курсора |
---|---|---|
1 | Результирующий набор курсора включает как минимум одну строку. В случае статических и управляемых набором ключей курсоров результирующий набор включает как минимум одну строку. В случае динамических курсоров результирующий набор может включать одну или более строк или не включать их. |
Курсор, выделенный этой переменной, открыт. В случае статических и управляемых набором ключей курсоров результирующий набор включает как минимум одну строку. В случае динамических курсоров результирующий набор может включать одну или более строк или не включать их. |
0 | Результирующий набор курсора пуст.* | Курсор, выделенный этой переменной, открыт, но результирующий набор пуст.* |
-1 | Курсор закрыт. | Курсор, выделенный этой переменной, закрыт. |
-2 | Неприменимо. | Возможен один из вариантов: ранее вызванная процедура не назначила курсор этой переменной с аргументом OUTPUT; ранее вызванная процедура назначила этой переменной с аргументом OUTPUT курсор, но при завершении процедуры он находился в закрытом состоянии. Таким образом, курсор освобождается и не возвращается вызвавшей процедуре. Объявленной переменной курсора курсор не назначен. |
-3 | Курсор с указанным именем не существует. | Переменная курсора с указанным именем не существует или существует, но ей еще не выделен курсор. |
*Динамические курсоры никогда не возвращают этот результат.
Примеры
В приведенном ниже примере функция CURSOR_STATUS
используется для отображения состояния курсора после его объявления, открытия и закрытия.
CREATE TABLE #TMP
(
ii INT
)
GO
INSERT INTO #TMP(ii) VALUES(1)
INSERT INTO #TMP(ii) VALUES(2)
INSERT INTO #TMP(ii) VALUES(3)
GO
--Create a cursor.
DECLARE cur CURSOR
FOR SELECT * FROM #TMP
--Display the status of the cursor before and after opening
--closing the cursor.
SELECT CURSOR_STATUS('global','cur') AS 'After declare'
OPEN cur
SELECT CURSOR_STATUS('global','cur') AS 'After Open'
CLOSE cur
SELECT CURSOR_STATUS('global','cur') AS 'After Close'
--Remove the cursor.
DEALLOCATE cur
--Drop the table.
DROP TABLE #TMP
Вот результирующий набор.
After declare
---------------
-1
After Open
----------
1
After Close
-----------
-1