Freigeben über


CURSOR_STATUS (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzSQL-Datenbank in Microsoft Fabric

Für einen bestimmten Parameter gibt CURSOR_STATUS an, ob eine Cursordeklaration einen Cursor und ein Resultset zurückgegeben hat oder nicht.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

"lokal"

Gibt eine Konstante an, die angibt, dass die Cursorquelle ein lokaler Cursor ist.

"global"

Gibt eine Konstante an, die angibt, dass die Quelle des Cursors ein globaler Cursor ist.

'Variable'

Gibt eine Konstante an, die kennzeichnet, dass die Quelle des Cursors eine lokale Variable ist.

  • "cursor_variable"

    Der Name der Cursorvariablen. Eine Cursorvariable muss mithilfe des cursor-Datentyps definiert werden.

Rückgabetypen

smallint

Rückgabewert Cursorname Cursorvariable
1 Das Resultset des Cursors hat mindestens eine Zeile.

Für INSENSITIVE- und KEYSET-Cursor hat das Resultset mindestens eine Zeile.

Für dynamische Cursor kann das Resultset keine, eine oder mehrere Zeilen haben.
Der für diese Variable zugeordnete Cursor ist geöffnet.

Für INSENSITIVE- und KEYSET-Cursor hat das Resultset mindestens eine Zeile.

Für dynamische Cursor kann das Resultset keine, eine oder mehrere Zeilen haben.
0 Das Cursorergebnissatz ist leer. 1 Der dieser Variable zugeordnete Cursor ist geöffnet, das Resultset ist jedoch definitiv leer.*
-1 Der Cursor ist geschlossen. Der dieser Variable zugeordnete Cursor ist geschlossen.
-2 Nicht zutreffend Eine der folgenden Möglichkeiten trifft zu:

Die zuvor aufgerufene Prozedur hat dieser OUTPUT Variablen keinen Cursor zugewiesen.

Die zuvor zugewiesene Prozedur hat dieser OUTPUT Variablen einen Cursor zugewiesen, der Cursor befindet sich jedoch im geschlossenen Zustand, als die Prozedur abgeschlossen wurde. Deshalb wird die Zuordnung des Cursors aufgehoben, und der Cursor wird nicht an die aufrufende Prozedur zurückgegeben.

Der deklarierten Cursorvariablen wird kein Cursor zugewiesen.
-3 Ein Cursor mit dem angegebenen Namen ist nicht vorhanden. Eine Cursorvariable mit dem angegebenen Namen ist nicht vorhanden, oder wenn vorhanden, wird ihm noch kein Cursor zugewiesen.

1 Dynamische Cursor geben dieses Ergebnis nie zurück.

Beispiele

In diesem Beispiel wird die CURSOR_STATUS-Funktion verwendet, um den Status eines Cursors mitzuteilen: nach seiner Deklaration, nachdem er geöffnet und nachdem er geschlossen wurde.

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 sehen Sie das Ergebnis.

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

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

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