Freigeben über


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 = ] cursor_return OUTPUT
    , [ @cursor_source = ] { N'local' | N'global' | N'*cursor_source*' }
    , [ @cursor_identity = ] N'cursor_identity'
[ ; ]

Argumente

[ @cursor_return = ] cursor_return OUTPUT

Der Name einer deklarierten Cursorvariable, um die Cursorausgabe zu empfangen. @cursor_return ist ein OUTPUT-Parameter vom Typ "int" ohne Standard und darf zu dem Zeitpunktsp_describe_cursor_columns, zu dem Cursor aufgerufen werden, nicht 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'cursor_source' }

Gibt an, ob der angegebene Cursor mithilfe des Namens eines lokalen Cursors, eines globalen Cursors oder einer Cursorvariable angegeben wird. @cursor_source ist nvarchar(30) ohne Standard.

[ @cursor_identity = ] N'cursor_identity'

Der Name eines Cursors, der von einer DECLARE CURSOR Anweisung erstellt wurde. @cursor_identity ist nvarchar(128), ohne Standard.

  • Wenn der Cursor das LOCAL Schlüsselwort aufweist oder standardmäßig auf LOCAL, @cursor_identity ist local.

  • Wenn der Cursor das GLOBAL Schlüsselwort aufweist oder standardmäßig auf GLOBAL, @cursor_identity ist global. @cursor_identity kann auch der Name eines API-Servercursors sein, der von einer ODBC-Anwendung geöffnet und dann durch Aufrufen SQLSetCursorNamebenannt wird.

  • Andernfalls ist @cursor_identity der Name einer Cursorvariable, die einem geöffneten Cursor zugeordnet ist.

Rückgabecodewerte

Keine.

Zurückgegebene Cursor

sp_describe_cursor_columns Kapselt den Bericht als Transact-SQL-Ausgabeparameter cursor . Dadurch können Transact-SQL-Batches, gespeicherte Prozeduren und Trigger gleichzeitig mit der Ausgabe arbeiten. Dies bedeutet auch, dass die Prozedur nicht direkt aus Datenbank-API-Funktionen aufgerufen werden kann. Der cursor Ausgabeparameter muss an eine Programmvariable gebunden werden, die Datenbank-APIs unterstützen jedoch keine Bindungsparameter cursor oder Variablen.

Die folgende Tabelle zeigt das Format des Cursors, der mithilfe sp_describe_cursor_columnsvon .

Spaltenname Datentyp Beschreibung
column_name sysname Der Name, der der Resultsetspalte zugewiesen ist. Die Spalte ist NULL , wenn die Spalte ohne begleitende AS Klausel angegeben wurde.

NULL-Werte sind zulässig.
ordinal_position int Die relative Position der Spalte in Bezug auf die äußerst linke Spalte im Resultset. Die erste Spalte befindet sich in der Position 0.
column_characteristics_flags int Eine Bitmaske, die die in DBCOLUMNFLAGS OLE DB gespeicherten Informationen angibt. Dies kann eine oder eine Kombination der folgenden Werte sein:

1 = Textmarke
2 = Feste Länge
4 = Nullwerte zulassend
8 = Zeilenversionsverwaltung
16 = Aktualisierbare Spalte (für projizierte Spalten eines Cursors festgelegt, die keine FOR UPDATE Klausel ist und wenn eine solche Spalte vorhanden ist, kann nur ein Cursor pro Cursor vorhanden sein).

Wenn Bitwerte kombiniert werden, gelten die Merkmale der kombinierten Bitwerte. Wenn der Bitwert beispielsweise lautet, ist 6die Spalte eine Spalte mit fester Länge (2), nullable (4) Spalte.
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 neben dem Dezimalkomma für die numerischen 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) A = Die Spalte befindet sich im Reihenfolgesschlüssel, und die Sortierung ist aufsteigend.
D = Die Spalte befindet sich im Reihenfolgesschlüssel, und die Sortierung ist absteigend.

NULL = Die Spalte nimmt nicht an der Sortierung teil.

NULL-Werte sind zulässig.
hidden_column smallint 0 = diese Spalte wird in der Auswahlliste angezeigt.

1 = Reserviert für die zukünftige Verwendung.
columnid int Die Spalten-ID der Basisspalte. Wenn die Ergebnissatzspalte aus einem Ausdruck erstellt wurde, columnid lautet -1.
objectid int Die Objekt-ID des Objekts oder der Basistabelle, das bzw. die die Spalte bereitstellt. Wenn die Ergebnissatzspalte aus einem Ausdruck erstellt wurde, objectid lautet -1.
dbid int Die ID der Datenbank mit der Basistabelle, die die Spalte bereitstellt. Wenn die Ergebnissatzspalte aus einem Ausdruck erstellt wurde, dbid lautet -1.
dbname sysname Der Name der Datenbank mit der Basistabelle, die die Spalte bereitstellt. Wenn die Ergebnissatzspalte aus einem Ausdruck erstellt wurde, lautet NULLdbname .

NULL-Werte sind zulässig.

Hinweise

sp_describe_cursor_columns beschreibt die Attribute der Spalten im Resultset eines Servercursors, z. B. den Namen und den Datentyp jedes Cursors. Wird für eine Beschreibung der globalen Attribute des Servercursors verwendet sp_describe_cursor . Wird sp_describe_cursor_tables für einen Bericht der Basistabellen verwendet, auf die der Cursor verweist. Verwenden Sie die Verwendung sp_cursor_list, um einen Bericht über die Transact-SQL-Servercursor abzurufen, die für die Verbindung sichtbar sind.

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