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 aufLOCAL
, @cursor_identity istlocal
.Wenn der Cursor das
GLOBAL
Schlüsselwort aufweist oder standardmäßig aufGLOBAL
, @cursor_identity istglobal
. @cursor_identity kann auch der Name eines API-Servercursors sein, der von einer ODBC-Anwendung geöffnet und dann durch AufrufenSQLSetCursorName
benannt 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_columns
von .
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 = Textmarke2 = Feste Länge4 = Nullwerte zulassend8 = Zeilenversionsverwaltung16 = 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 6 die 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 NULL dbname .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