Delen via


CURSOR_STATUS (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Voor een bepaalde parameter CURSOR_STATUS geeft u aan of een cursordeclaratie een cursor en resultatenset heeft geretourneerd.

Transact-SQL syntaxis-conventies

Syntaxis

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

Argumenten

'lokaal'

Hiermee geeft u een constante op die aangeeft dat de cursorbron een lokale cursor is.

  • 'cursor_name'

    De naam van de cursor. Een cursornaam moet voldoen aan de database-id-regels.

'globaal'

Hiermee geeft u een constante op die aangeeft dat de bron van de cursor een globale cursor is.

'variabele'

Hiermee geeft u een constante op die aangeeft dat de bron van de cursor een lokale variabele is.

  • 'cursor_variable'

    De naam van de cursorvariabele. Er moet een cursorvariabele worden gedefinieerd met behulp van het gegevenstype cursor .

Retourtypen

smallint

Retourwaarde Cursornaam Cursorvariabele
1 De resultatenset van de cursor heeft ten minste één rij.

Voor niet-gevoelige en sleutelsetcursors heeft de resultatenset ten minste één rij.

Voor dynamische cursors kan de resultatenset nul, één of meer rijen bevatten.
De cursor die aan deze variabele is toegewezen, is geopend.

Voor niet-gevoelige en sleutelsetcursors heeft de resultatenset ten minste één rij.

Voor dynamische cursors kan de resultatenset nul, één of meer rijen bevatten.
0 De resultatenset van de cursor is leeg. 1 De cursor die aan deze variabele is toegewezen, is geopend, maar de resultatenset is zeker leeg.*
-1 De cursor is gesloten. De cursor die aan deze variabele is toegewezen, wordt gesloten.
-2 Niet van toepassing. Heeft een van deze mogelijkheden:

Met de eerder aangeroepen procedure is geen cursor aan deze OUTPUT variabele toegewezen.

De eerder toegewezen procedure heeft een cursor aan deze OUTPUT variabele toegewezen, maar de cursor heeft een gesloten status toen de procedure werd voltooid. Daarom wordt de toewijzing van de cursor ongedaan gemaakt en wordt deze niet teruggezet naar de aanroepprocedure.

Er is geen cursor toegewezen aan de gedeclareerde cursorvariabele.
-3 Er bestaat geen cursor met de opgegeven naam. Er bestaat geen cursorvariabele met de opgegeven naam of als er een bestaat, wordt er nog geen cursor aan toegewezen.

1 Dynamische cursors retourneren dit resultaat nooit.

Voorbeelden

In dit voorbeeld wordt de CURSOR_STATUS functie gebruikt om de status van een cursor weer te geven, na de declaratie, nadat deze is geopend en nadat deze is gesloten.

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;

Hier is het resultatenoverzicht.

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

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

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