CURSOR_STATUS (Transact-SQL)

Eine Skalarfunktion, mit der der Aufrufer einer gespeicherten Prozedur bestimmen kann, ob die Prozedur einen Cursor und ein Resultset für einen angegebenen Parameter zurückgegeben hat.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

  • 'local'
    Gibt eine Konstante an, die anzeigt, dass die Quelle des Cursors ein lokaler Cursorname ist.

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

  • 'global'
    Gibt eine Konstante an, die anzeigt, dass die Quelle des Cursors ein globaler Cursorname ist.

  • 'variable'
    Gibt eine Konstante an, die anzeigt, 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.

Mögliche Werte sind:

Für diese OUTPUT-Variable wurde kein Cursor durch die zuvor aufgerufene Prozedur zugewiesen.

Die zuvor aufgerufene Prozedur hat dieser OUTPUT-Variablen einen Cursor zugewiesen; bei Abschluss der Prozedur befand sich der Cursor jedoch in geschlossenem Status. Deshalb wird die Zuordnung aufgehoben, und der Cursor wird nicht zur aufrufenden Prozedur zurückgegeben.

Einer deklarierten Cursorvariablen wird kein Cursor zugewiesen.

-3

Ein Cursor mit dem angegebenen Namen ist nicht vorhanden.

Die Cursorvariable mit dem angegebenen Namen ist nicht vorhanden, oder für sie wurde noch kein Cursor zugeordnet.

* Dynamische Cursor geben dieses Ergebnis nie zurück.

Beispiele

Das folgende Beispiel verwendet die CURSOR_STATUS-Funktion, um den Status eines Cursos darzustellen, nachdem er geöffnet und 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

Dies ist das Resultset.

Nach dem Deklarieren

---------------

-1

Nach dem Öffnen

----------

1

Nach dem Schließen

-----------

-1