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


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

См. также

Функции курсора (Transact-SQL)
Типы данных (Transact-SQL)