sp_describe_cursor_columns (Transact-SQL)

Meldet die Attribute der Spalten im Resultset eines Servercursors.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

sp_describe_cursor_columns 
   [ @cursor_return = ] output_cursor_variable OUTPUT 
    { [ , [ @cursor_source = ] N'local', 
          [ @cursor_identity = ] N'local_cursor_name' ] 
    | [ , [ @cursor_source = ] N'global', 
          [ @cursor_identity = ] N'global_cursor_name' ] 
    | [ , [ @cursor_source = ] N'variable', 
          [ @cursor_identity = ] N'input_cursor_variable' ] 
   }

Argumente

[ @cursor_return = ] output_cursor_variableOUTPUT

Der Name einer deklarierten Cursorvariablen, die die Cursorausgabe erhalten soll. output_cursor_variable ist ein Wert vom Datentyp cursor und weist keinen Standardwert auf. Dieser Parameter darf beim Aufruf von sp_describe_cursor keinem Cursor zugeordnet sein. Bei dem zurückgegebenen Cursor handelt es sich um einen scrollfähigen, dynamischen, schreibgeschützten Cursor.

[ @cursor_source = ] { N'local' | N'global' | N'variable' }

Gibt an, ob der Cursor, für den der Bericht erstellt wird, mithilfe des Namens eines lokalen Cursors, eines globalen Cursors oder einer Cursorvariablen angegeben wird. Dieser Parameter ist vom Datentyp nvarchar(30).

[ @cursor_identity = ] N'local_cursor_name'

Der Name eines mit einer DECLARE CURSOR-Anweisung erstellten Cursors, der entweder das LOCAL-Schlüsselwort aufweist oder standardmäßig auf LOCAL festgelegt wird. local_cursor_name ist ein Wert vom Datentyp nvarchar(128).

[ @cursor_identity = ] N'global_cursor_name'

Der Name eines mit einer DECLARE CURSOR-Anweisung erstellten Cursors, der entweder das GLOBAL-Schlüsselwort aufweist oder standardmäßig auf GLOBAL festgelegt wird. global_cursor_name ist ein Wert vom Datentyp nvarchar(128).

global_cursor_name kann auch der Name eines API-Servercursors sein, der von einer ODBC-Anwendung geöffnet wurde, die den Cursor dann durch den Aufruf von SQLSetCursorName benannt hat.

[ @cursor_identity = ] N'input_cursor_variable'

Der Name einer Cursorvariablen, die mit einem geöffneten Cursor verknüpft ist. input_cursor_variable ist ein Wert vom Datentyp nvarchar(128).

Rückgabecodewerte

Keine

Hinweise

sp_describe_cursor_columns beschreibt die Attribute der Spalten im Resultset eines Servercursors, wie z. B. den Namen und den Datentyp der einzelnen Cursor. Mit sp_describe_cursor zeigen Sie eine Beschreibung der globalen Attribute des Servercursors an. Mit sp_describe_cursor_tables zeigen Sie an, auf welche Basistabellen der Cursor verweist. Mit sp_cursor_list erhalten Sie einen Bericht der Transact-SQL-Servercursor, die für die Verbindung sichtbar sind.

Berechtigungen

Erfordert die Mitgliedschaft in der public-Rolle.

Zurückgegebene Cursor

sp_describe_cursor_columns kapselt den Bericht in einen cursor-Ausgabeparameter von Transact-SQL. Dies ermöglicht, dass Transact-SQL-Batches, gespeicherte Prozeduren und Trigger die Ausgabe zeilenweise verwenden können. Dies bedeutet außerdem, dass es nicht möglich ist, die Prozedur direkt über Datenbank-API-Funktionen aufzurufen. Der cursor-Ausgabeparameter muss an eine Programmvariable gebunden sein, aber die Datenbank-APIs unterstützen die Bindung von cursor-Parametern oder -Variablen nicht.

In der folgenden Tabellen wird das Format des mit sp_describe_cursor_columns zurückgegebenen Cursors dargestellt.

Spaltenname Datentyp Beschreibung

Spaltenname

sysname (NULL zulassen)

Der Name, der der Resultsetspalte zugewiesen ist. Die Spalte weist den Wert NULL auf, wenn die Spalte ohne zugehörige AS-Klausel angegeben wurde.

ordinal_position

int

Die relative Position der Spalte bezüglich der Spalte ganz links im Resultset. Die erste Spalte befindet sich an Position 0.

column_characteristics_flags

int

Eine Bitmaske zum Anzeigen der Informationen, die in DBCOLUMNFLAGS in OLE DB gespeichert sind. Dies kann eine oder eine Kombination der folgenden Optionen sein:

1 = Lesezeichen

2 = Feste Länge

4 = NULL zulassen

8 = Zeilenversionsverwaltung

16 = Aktualisierbare Spalte (wird für voraussichtliche Spalten eines Cursors festgelegt, der keine FOR UPDATE-Klausel aufweist. Wenn eine solche Spalte vorhanden ist, ist pro Cursor nur eine einzige zulässig).

Wenn Bitwerte kombiniert werden, gelten die Merkmale der kombinierten Bitwerte. Beispielsweise hat mit dem Bitwert 6 die Spalte eine feste Länge (2) und lässt NULL-Werte zu (4).

column_size

int

Die maximal mögliche Größe von Werten in dieser Spalte.

data_type_sql

smallint

Eine Nummer zum Anzeigen des SQL Server-Datentyps der Spalte.

column_precision

tinyint

Die maximale Genauigkeit der Spalte gemäß dem bPrecision-Wert in OLE DB.

column_scale

tinyint

Die Anzahl von Stellen nach dem Dezimalkomma für die Datentypen numeric oder decimal gemäß dem bScale-Wert in OLE DB.

order_position

int

Wenn die Spalte bei der Sortierung des Resultsets berücksichtigt wird, bezeichnet dies die Position der Spalte im Sortierschlüssel relativ zur Spalte ganz links.

order_direction

varchar(1) (NULL zulassen)

A = Die Spalte befindet sich im Sortierschlüssel, und die Sortierung ist aufsteigend.

D = Die Spalte befindet sich im Sortierschlüssel, und die Sortierung ist absteigend.

NULL = Die Spalte wird nicht bei der Sortierung berücksichtigt.

hidden_column

smallint

0 = Diese Spalte wird in der Auswahlliste angezeigt.

1 = Zur künftigen Verwendung reserviert.

columnid

int

Die Spalten-ID der Basisspalte. Wenn die Resultsetspalte mit einem Ausdruck erstellt wurde, weist columnid den Wert -1 auf.

objectid

int

Die Objekt-ID des Objekts oder der Basistabelle, das bzw. die die Spalte bereitstellt. Wenn die Resultsetspalte mit einem Ausdruck erstellt wurde, weist objectid den Wert -1 auf.

dbid

int

Die ID der Datenbank mit der Basistabelle, die die Spalte bereitstellt. Wenn die Resultsetspalte mit einem Ausdruck erstellt wurde, weist dbid den Wert -1 auf.

dbname

sysname

(NULL zulassen)

Der Name der Datenbank mit der Basistabelle, die die Spalte bereitstellt. Wenn die Resultsetspalte mit einem Ausdruck erstellt wurde, weist dbname den Wert NULL auf.

Beispiele

Im folgenden Beispiel wird ein globalen Cursor geöffnet und ein Bericht der für diesen Cursor verwendeten Spalten mithilfe von sp_describe_cursor_columns erstellt .

USE AdventureWorks;
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR KEYSET FOR
SELECT LastName
FROM Person.Contact
GO
OPEN abc

-- Declare a cursor variable to hold the cursor output variable
-- from sp_describe_cursor_columns.
DECLARE @Report CURSOR

-- Execute sp_describe_cursor_columns into the cursor variable.
EXEC master.dbo.sp_describe_cursor_columns
      @cursor_return = @Report OUTPUT,
      @cursor_source = N'global', @cursor_identity = N'abc'

-- Fetch all the rows from the sp_describe_cursor_columns output cursor.
FETCH NEXT from @Report
WHILE (@@FETCH_STATUS <> -1)
BEGIN
   FETCH NEXT from @Report
END

-- Close and deallocate the cursor from sp_describe_cursor_columns.
CLOSE @Report
DEALLOCATE @Report
GO
-- Close and deallocate the original cursor.
CLOSE abc
DEALLOCATE abc
GO

Siehe auch

Verweis

CURSOR_STATUS (Transact-SQL)
DECLARE CURSOR (Transact-SQL)
sp_describe_cursor (Transact-SQL)
sp_cursor_list (Transact-SQL)
sp_describe_cursor_tables (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)

Andere Ressourcen

Cursor (Datenbankmodul)

Hilfe und Informationen

Informationsquellen für SQL Server 2005