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


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"

Указывает константу, указывающую, что источник курсора является локальным курсором.

"global"

Указывает константу, указывающую, что источник курсора является глобальным курсором.

"переменная"

Задает константу, показывающую, что источник курсора — это локальная переменная.

  • "cursor_variable"

    Имя переменной курсора. Переменная курсора должна быть определена с типом данных cursor.

Типы возвращаемых данных

смолинт

Возвращаемое значение Имя курсора Переменная курсора
1 Результирующий набор курсора включает как минимум одну строку.

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

В случае динамических курсоров результирующий набор может включать одну или более строк или не включать их.
Курсор, выделенный этой переменной, открыт.

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

В случае динамических курсоров результирующий набор может включать одну или более строк или не включать их.
0 Результирующий набор курсора пуст. 1 Курсор, выделенный этой переменной, открыт, но результирующий набор пуст.*
-1 Курсор закрыт. Курсор, выделенный этой переменной, закрыт.
-2 Неприменимо. Возможен один из вариантов:

Ранее вызываемая процедура не назначила курсор этой OUTPUT переменной.

Ранее назначенная процедура назначила курсор этой OUTPUT переменной, но курсор был в закрытом состоянии после завершения процедуры. Таким образом, курсор освобождается и не возвращается вызвавшей процедуре.

Объявленной переменной курсора курсор не назначен.
-3 Курсор с указанным именем не существует. Переменная курсора с указанным именем не существует или если она существует, курсор пока не выделяется.

1 Динамические курсоры никогда не возвращают этот результат.

Примеры

В приведенном ниже примере функция 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
-- and 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