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

In diesem Beispiel wird eine Prozedur namens lake_list erstellt und die Ausgabe des Ausführens von lake_list zur Überprüfung von CURSOR_STATUS verwendet.

ms177609.note(de-de,SQL.90).gifHinweis:
Dieses Beispiel ist abhängig von einer Prozedur namens check_authority, die nicht erstellt wurde.
IF EXISTS (SELECT name FROM sysobjects
      WHERE name = 'lake_list' AND type = 'P')
   DROP PROCEDURE lake_list
GO
CREATE PROCEDURE lake_list
   ( @region varchar(30),
     @size integer,
     @lake_list_cursor CURSOR VARYING OUTPUT )
AS 
BEGIN
   DECLARE @ok SMALLINT
   EXECUTE check_authority @region, username, @ok OUTPUT
   IF @ok = 1
      BEGIN
      SET @lake_list_cursor = CURSOR LOCAL SCROLL FOR
         SELECT name, lat, long, size, boat_launch, cost
         FROM lake_inventory
         WHERE locale = @region AND area >= @size
         ORDER BY name
      OPEN @lake_list_cursor
      END
END
DECLARE @my_lakes_cursor CURSOR
DECLARE @my_region char(30)
SET @my_region = 'Northern Ontario'
EXECUTE lake_list @my_region, 500, @my_lakes_cursor OUTPUT
IF Cursor_Status('variable', '@my_lakes_cursor') <= 0
   BEGIN
   /* Some code to tell the user that there is no list of
   Lakes. */
   END
ELSE
   BEGIN
      FETCH @my_lakes_cursor INTO -- Destination here
      -- Continue with other code here.
END

Siehe auch

Verweis

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

Andere Ressourcen

Verwenden von Bezeichnern als Objektnamen

Hilfe und Informationen

Informationsquellen für SQL Server 2005