sp_describe_cursor_columns (Transact-SQL)

Gilt für:SQL Server

Meldet die Attribute der Spalten im Resultset eines Servercursors.

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_variable OUTPUT
Der Name einer deklarierten Cursorvariablen zum Empfangen der Cursorausgabe. output_cursor_variable ist der Cursor ohne Standard und darf zum Zeitpunkt des Aufrufs sp_describe_cursor_columns keinem Cursor zugeordnet werden. 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. Der Parameter ist 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 ist. local_cursor_name ist 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 ist. global_cursor_name ist nvarchar(128).

global_cursor_name kann auch der Name eines API-Servercursors sein, der von einer ODBC-Anwendung geöffnet und dann durch Aufrufen von SQLSetCursorName benannt wird.

[ @cursor_identity= ] N'input_cursor_variable'
Der Name einer Cursorvariablen, die mit einem geöffneten Cursor verknüpft ist. input_cursor_variable ist nvarchar(128).

Rückgabecodewerte

Keine

Zurückgegebene Cursor

sp_describe_cursor_columns kapselt den Bericht als Transact-SQL-Cursorausgabeparameter. Dadurch können Transact-SQL-Batches, gespeicherte Prozeduren und Trigger zeilenweise mit der Ausgabe arbeiten. Dies bedeutet auch, dass die Prozedur nicht direkt über Datenbank-API-Funktionen aufgerufen werden kann. Der Cursorausgabeparameter muss an eine Programmvariable gebunden sein, aber die Datenbank-APIs unterstützen keine Bindungscursorparameter oder -variablen.

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

Spaltenname Datentyp BESCHREIBUNG
column_name sysname (nullable) 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 in Bezug auf die äußerst linke Spalte 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 die Spalte mit dem Bitwert 6 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 Zahl, die den SQL Server Datentyp der Spalte angibt.
column_precision tinyint Maximale Genauigkeit der Spalte gemäß dem bPrecision-Wert in OLE DB.
column_scale tinyint Anzahl der Ziffern rechts vom Dezimaltrennzeichen für die numerischen datentypen oder dezimalen Datentypen 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)(nullable) 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.

Bemerkungen

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. Wenn Sie einen Bericht der in der Verbindung sichtbaren Transact-SQL Servercursor benötigen, verwenden Sie sp_cursor_list.

Berechtigungen

Erfordert die Mitgliedschaft in der public-Rolle.

Beispiele

Im folgenden Beispiel wird ein globaler Cursor geöffnet und mithilfe von sp_describe_cursor_columns ein Bericht der im Cursor verwendeten Spalten erstellt.

USE AdventureWorks2022;  
GO  
-- Declare and open a global cursor.  
DECLARE abc CURSOR KEYSET FOR  
SELECT LastName  
FROM Person.Person;  
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  

Weitere Informationen

Cursor
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)