Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Rapporteert de attributen van servercursors die momenteel open zijn voor de verbinding.
Transact-SQL syntaxis-conventies
Syntax
sys.sp_cursor_list
[ @cursor_return = ] cursor_return OUTPUT
, [ @cursor_scope = ] cursor_scope
[ ; ]
Arguments
[ @cursor_return = ] cursor_return OUTPUT
De naam van een gedeclareerde cursorvariabele.
@cursor_return is een OUTPUT parameter van het type CURSOR. De cursor is een scrollbare, dynamische, alleen-lezen cursor.
[ @cursor_scope = ] cursor_scope
Geeft het niveau van de cursors aan die gerapporteerd moeten worden. @cursor_scope is int, zonder standaard, en kan een van deze waarden zijn.
| Waarde | Description |
|---|---|
1 |
Rapporteer alle lokale cursors. |
2 |
Rapporteer alle globale cursors. |
3 |
Rapporteer zowel lokale als globale cursors. |
Codewaarden retourneren
None.
Cursors keerden terug
sp_cursor_list geeft zijn rapport terug als een Transact-SQL cursor-uitvoerparameter, niet als een resultaatset. Dit maakt het mogelijk dat Transact-SQL batches, opgeslagen procedures en triggers één rij tegelijk met de output werken. Het betekent ook dat de procedure niet direct vanuit database-API-functies kan worden aangeroepen. De cursor-uitvoerparameter moet gebonden zijn aan een programmavariabele, maar de database-API's ondersteunen geen binding van cursorparameters of variabelen.
Dit is het formaat van de cursor die door sp_cursor_listwordt teruggegeven. Het formaat van de cursor is hetzelfde als het formaat dat door sp_describe_cursorwordt teruggegeven.
| Kolomnaam | Gegevenstype | Description |
|---|---|---|
reference_name |
sysname | De naam verwees vroeger naar de cursor. Als de verwijzing naar de cursor via de naam op een DECLARE CURSOR statement was, is de referentienaam hetzelfde als de cursornaam. Als de referentie naar de cursor via een variabele was, is de referentienaam de naam van de cursorvariabele. |
cursor_name |
sysname | De naam van de cursor uit een DECLARE CURSOR statement. In SQL Server, als de cursor is aangemaakt door een cursorvariabele aan een cursor te zetten, cursor_name wordt de naam van de cursorvariabele teruggegeven. In eerdere releases geeft deze outputkolom een door het systeem gegenereerde naam terug. |
cursor_scope |
smallint | 1 = LOCAL2 = GLOBAL |
status |
smallint | Dezelfde waarden als gerapporteerd door de CURSOR_STATUS systeemfunctie:1 = De cursor waarnaar wordt verwezen door de cursornaam of variabele is open. Als de cursor ongevoelig, statisch of keyset is, is het minstens één rij. Als de cursor dynamisch is, heeft de resultaatset nul of meer rijen.0 = De cursor waarnaar wordt verwezen door de cursornaam of variabele is open maar heeft geen rijen. Dynamische cursors geven deze waarde nooit terug.-1 = De cursor waarnaar wordt verwezen door de cursornaam of variabele is gesloten.-2 = Gilt alleen voor cursorvariabelen. Er is geen cursor toegewezen aan de variabele. Mogelijk wees een OUTPUT parameter een cursor toe aan de variabele, maar de opgeslagen procedure sloot de cursor voordat deze terugkeerde.-3 = Een cursor of cursorvariabele met de opgegeven naam bestaat niet, of de cursorvariabele heeft geen cursor toegewezen. |
model |
smallint |
1 = Ongevoelig (of statisch)2 = Keyset3 = Dynamisch4 = Snel vooruitspoelen |
concurrency |
smallint |
1 = Alleen-lezen2 = Scroll locks3 = Optimistisch |
scrollable |
smallint |
0 = Alleen vooruit1 = Scrollbaar |
open_status |
smallint |
0 = Gesloten1 = Open |
cursor_rows |
int | Het aantal kwalificatierijen in de resultaatsverzameling. Voor meer informatie, zie @@CURSOR_ROWS. |
fetch_status |
smallint | De status van de laatste ophaalactie op deze cursor. Voor meer informatie, zie @@FETCH_STATUS:0 = Ophalen geslaagd.-1 = Ophalen mislukte of buiten de grenzen van de cursor ligt.-2 = De gevraagde rij ontbreekt.-9 = Er is geen fetch op de cursor geweest. |
column_count |
smallint | Het aantal kolommen in de cursorresultaatset. |
row_count |
smallint | Het aantal rijen dat door de laatste bewerking op de cursor wordt beïnvloed. Voor meer informatie, zie @@ROWCOUNT. |
last_operation |
smallint | De laatste bewerking die op de cursor werd uitgevoerd:0 = Er werden geen bewerkingen op de cursor uitgevoerd.1 = OPEN2 = FETCH3 = INSERT4 = UPDATE5 = DELETE6 = CLOSE7 = DEALLOCATE |
cursor_handle |
int | Een unieke waarde die de cursor binnen de scope van de server identificeert. |
Remarks
sp_cursor_list produceert een lijst van de huidige servercursors die door de verbinding worden geopend en beschrijft de globale attributen voor elke cursor, zoals de scrollbaarheid en updatebaarheid van de cursor. De door sp_cursor_list genoemde cursors zijn onder andere:
Transact-SQL servercursors.
API-servercursors worden geopend door een ODBC-applicatie die vervolgens wordt aangeroepen
SQLSetCursorNameom de cursor te benoemen.
Gebruik sp_describe_cursor_columns voor een beschrijving van de attributen van de resultaatset die door de cursor wordt teruggegeven. Gebruik sp_describe_cursor_tables dit voor een rapport van de basistabellen waarnaar de cursor verwijst.
sp_describe_cursor rapporteert dezelfde informatie als sp_cursor_list, maar alleen voor een gespecificeerde cursor.
Permissions
Uitvoeringsrechten worden standaard naar de publieke rol.
Examples
Het volgende voorbeeld opent een globale cursor en gebruikt sp_cursor_list deze om te rapporteren over de attributen van de cursor.
USE AdventureWorks2022;
GO
-- Declare and open a keyset-driven cursor.
DECLARE abc CURSOR KEYSET
FOR SELECT LastName
FROM Person.Person
WHERE LastName LIKE 'S%';
OPEN abc;
-- Declare a cursor variable to hold the cursor output variable
-- from sp_cursor_list.
DECLARE @Report AS CURSOR;
-- Execute sp_cursor_list into the cursor variable.
EXECUTE master.dbo.sp_cursor_list
@cursor_return = @Report OUTPUT,
@cursor_scope = 2;
-- Fetch all the rows from the sp_cursor_list output cursor.
FETCH NEXT FROM @Report;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
FETCH NEXT FROM @Report;
END
-- Close and deallocate the cursor from sp_cursor_list.
CLOSE @Report;
DEALLOCATE @Report;
GO
-- Close and deallocate the original cursor.
CLOSE abc;
DEALLOCATE abc;
GO