Udostępnij za pomocą


CURSOR_STATUS (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Dla danego parametru pokazuje, CURSOR_STATUS czy deklaracja kursora zwróciła kursor i zestaw wyników.

Transact-SQL konwencje składni

Składnia

CURSOR_STATUS
     (
          { 'local' , 'cursor_name' }
          | { 'global' , 'cursor_name' }
          | { 'variable' , 'cursor_variable' }
     )

Argumenty (w programowaniu)

"local"

Określa stałą wskazującą, że źródło kursora jest kursorem lokalnym.

"globalny"

Określa stałą wskazującą, że źródłem kursora jest kursor globalny.

"zmienna"

Określa stałą wskazującą, że źródłem kursora jest zmienna lokalna.

  • "cursor_variable"

    Nazwa zmiennej kursora. Zmienna kursora musi być zdefiniowana przy użyciu typu danych kursora .

Typy zwracane

smallint

Wartość zwracana Nazwa kursora Zmienna kursora
1 Zestaw wyników kursora ma co najmniej jeden wiersz.

W przypadku kursorów bez uwzględniania i zestawu zestaw wyników ma co najmniej jeden wiersz.

W przypadku kursorów dynamicznych zestaw wyników może mieć zero, jeden lub więcej wierszy.
Kursor przydzielony do tej zmiennej jest otwarty.

W przypadku kursorów bez uwzględniania i zestawu zestaw wyników ma co najmniej jeden wiersz.

W przypadku kursorów dynamicznych zestaw wyników może mieć zero, jeden lub więcej wierszy.
0 Zestaw wyników kursora jest pusty. 1 Kursor przydzielony do tej zmiennej jest otwarty, ale zestaw wyników jest zdecydowanie pusty.*
-1 Kursor jest zamknięty. Kursor przydzielony do tej zmiennej jest zamknięty.
-2 Nie dotyczy. Ma jedną z następujących możliwości:

Wcześniej wywołana procedura nie przypisze kursora do tej OUTPUT zmiennej.

Wcześniej przypisana procedura przypisała kursor do tej OUTPUT zmiennej, ale kursor był w stanie zamkniętym po zakończeniu procedury. W związku z tym kursor jest cofany i nie jest zwracany do procedury wywołującej.

Żaden kursor nie jest przypisany do zadeklarowanej zmiennej kursora.
-3 Kursor o określonej nazwie nie istnieje. Zmienna kursora o określonej nazwie nie istnieje lub jeśli istnieje, nie zostanie jeszcze przydzielony kursor.

1 Kursory dynamiczne nigdy nie zwracają tego wyniku.

Przykłady

W tym przykładzie użyto CURSOR_STATUS funkcji , aby wyświetlić stan kursora po jego deklaracji, po jej otworze i po zamknięciu.

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;

Oto zestaw wyników.

After declare
---------------
-1

After Open
----------
1

After Close
-----------
-1