Sdílet prostřednictvím


CURSOR_STATUS (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

U daného parametru se zobrazí, CURSOR_STATUS zda deklarace kurzoru vrátila kurzor a sadu výsledků.

Transact-SQL konvence syntaxe

Syntaxe

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

Argumenty

"local"

Určuje konstantu označující, že zdrojem kurzoru je místní kurzor.

Global

Určuje konstantu označující, že zdrojem kurzoru je globální kurzor.

Proměnná

Určuje konstantu označující, že zdrojem kurzoru je místní proměnná.

  • "cursor_variable"

    Název proměnné kurzoru. Proměnná kurzoru musí být definována pomocí datového typu kurzoru .

Návratové typy

smallint

Návratová hodnota Název kurzoru Proměnná kurzoru
1 Sada výsledků kurzoru má aspoň jeden řádek.

Pro necitlivé kurzory a kurzory sady klíčů má sada výsledků alespoň jeden řádek.

U dynamických kurzorů může sada výsledků obsahovat nula, jeden nebo více řádků.
Kurzor přidělený této proměnné je otevřený.

Pro necitlivé kurzory a kurzory sady klíčů má sada výsledků alespoň jeden řádek.

U dynamických kurzorů může sada výsledků obsahovat nula, jeden nebo více řádků.
0 Sada výsledků kurzoru je prázdná. 1 Kurzor přidělený této proměnné je otevřený, ale sada výsledků je rozhodně prázdná.*
-1 Kurzor je zavřený. Kurzor přidělený této proměnné je zavřený.
-2 Nelze použít. Má jednu z těchto možností:

Dříve označovaný postup nepřiřadil kurzor k této OUTPUT proměnné.

Dříve přiřazený postup přiřadil kurzor této OUTPUT proměnné, ale kurzor byl v uzavřeném stavu po dokončení procedury. Proto je kurzor uvolněn a nevrací se volající procedurě.

K deklarované proměnné kurzoru není přiřazen žádný kurzor.
-3 Kurzor se zadaným názvem neexistuje. Proměnná kurzoru se zadaným názvem neexistuje nebo pokud existuje, není k ní ještě přidělen žádný kurzor.

1 Dynamické kurzory nikdy nevracely tento výsledek.

Příklady

Tento příklad používá CURSOR_STATUS funkci k zobrazení stavu kurzoru po jeho deklaraci, po otevření a po zavření.

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;

Tady je soubor výsledků.

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

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

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