CURSOR_STATUS (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

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' }   
     )  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

'local'
Gibt eine Konstante an, die kennzeichnet, dass die Cursorquelle ein lokaler Cursorname ist.

'cursor_name'
Der Name des Cursors. Ein Cursorname muss den Regeln für Datenbankbezeichner entsprechen.

'global'
Gibt eine Konstante an, die kennzeichnet, dass die Quelle des Cursors ein globaler Cursorname 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 Resultset des Cursors ist leer.* 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, aber der Cursor war bei Abschluss der Prozedur geschlossen. 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 ihr wurde, wenn sie vorhanden ist, noch kein Cursor zugeordnet.

* 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  
--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 ist das Resultset.

After declare
---------------
-1  
  
After Open
----------
1  
  
After Close
-----------
-1

Weitere Informationen

Cursorfunktionen (Transact-SQL)
Datentypen (Transact-SQL)