CURSOR_STATUS (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure 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' }
)
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 sehen Sie das Ergebnis.
After declare
---------------
-1
After Open
----------
1
After Close
-----------
-1