sys.sp_cursor_list (Transact-SQL)

Gäller för:SQL Server

Rapporterar attributen för servermarkörer som för närvarande är öppna för anslutningen.

Transact-SQL syntaxkonventioner

Syntax

sys.sp_cursor_list
    [ @cursor_return = ] cursor_return OUTPUT
    , [ @cursor_scope = ] cursor_scope
[ ; ]

Arguments

[ @cursor_return = ] cursor_return UTGÅNG

Namnet på en deklarerad markörvariabel. @cursor_return är en OUTPUT parameter av typen CURSOR. Markören är en rullbar, dynamisk, skrivskyddad markör.

[ @cursor_scope = ] cursor_scope

Specificerar nivån på markörer som ska rapporteras. @cursor_scope är int, utan standard, och kan vara ett av dessa värden.

Value Description
1 Rapportera alla lokala markörer.
2 Rapportera alla globala kursorer.
3 Rapportera både lokala och globala markörer.

Returnera kodvärden

None.

Markörer återvände

sp_cursor_list returnerar sin rapport som en Transact-SQL markörens utgångsparameter, inte som en resultatuppsättning. Detta gör att Transact-SQL batcher, lagrade procedurer och triggers kan arbeta med utdata en rad i taget. Det innebär också att proceduren inte kan anropas direkt från databas-API-funktioner. Markörens utgångsparameter måste vara bunden till en programvariabel, men databasens API:er stöder inte bindning av markörparametrar eller variabler.

Detta är formatet för markören som returneras av sp_cursor_list. Formatet på markören är detsamma som formatet som returneras av sp_describe_cursor.

Kolumnnamn Datatyp Description
reference_name sysname Namnet som användes för att syfta på markören. Om referensen till markören gick via namnet som anges i ett DECLARE CURSOR uttalande, är referensnamnet samma som markörens namn. Om referensen till markören gick via en variabel, är referensnamnet namnet på markörvariabeln.
cursor_name sysname Namnet på markören från ett DECLARE CURSOR påstående. I SQL Server, om markören skapades genom att sätta en markörvariabel till en markörcursor_name, returneras namnet på markörvariabeln. I tidigare versioner returnerar denna utdatakolumn ett systemgenererat namn.
cursor_scope smallint 1 = LOCAL
2 = GLOBAL
status smallint Samma värden som rapporteras CURSOR_STATUS av systemfunktionen:

1 = Markören som refereras till av markörnamnet eller variabeln är öppen. Om markören är okänslig, statisk eller med tangenter är det minst en rad. Om markören är dynamisk har resultatmängden noll eller fler rader.

0 = Markören som refereras till med markörens namn eller variabel är öppen men har inga rader. Dynamiska markörer returnerar aldrig detta värde.

-1 = Markören som refereras till av markörnamnet eller variabeln är stängd.

-2 = Gäller endast för markörvariabler. Det finns ingen markör tilldelad variabeln. Möjligen OUTPUT en parameter tilldelade en markör till variabeln, men den lagrade proceduren stängde markören innan den återvände.

-3 = En markör eller markörvariabel med det angivna namnet existerar inte, eller så har markörvariabeln ingen markör tilldelad.
model smallint 1 = Okänslig (eller statisk)
2 = Tangentuppsättning
3 = Dynamisk
4 = Spola fram
concurrency smallint 1 = Skrivskyddat
2 = Scrolllås
3 = Optimistisk
scrollable smallint 0 = Endast framåt
1 = Rullbart
open_status smallint 0 = Stängd
1 = Öppet
cursor_rows int Antalet kvalificeringsrader i resultatuppsättningen. För mer information, se @@CURSOR_ROWS.
fetch_status smallint Status för den sista hämtningen på denna markör. För mer information, se @@FETCH_STATUS:

0 = Hämtan lyckades.
-1 = Hämtningen misslyckades eller ligger utanför markörens gränser.
-2 = Den begärda raden saknas.
-9 = Det har inte gjorts någon hämtning på markören.
column_count smallint Antalet kolumner i markörresultatet.
row_count smallint Antalet rader som påverkas av den senaste operationen på markören. För mer information, se @@ROWCOUNT.
last_operation smallint Den sista operationen som utfördes på markören:

0 = Inga operationer utfördes på markören.
1 = OPEN
2 = FETCH
3 = INSERT
4 = UPDATE
5 = DELETE
6 = CLOSE
7 = DEALLOCATE
cursor_handle int Ett unikt värde som identifierar markören inom serverns omfattning.

Remarks

sp_cursor_list producerar en lista över de aktuella servermarkörerna som öppnas av anslutningen och beskriver de globala attributen för varje markör, såsom rullbarhet och uppdateringsbarhet för markören. De markörer som listas av sp_cursor_list inkluderar:

  • Transact-SQL servermarkörer.

  • API-servermarkörer öppnas av en ODBC-applikation som sedan anropas SQLSetCursorName för att namnge markören.

Använd sp_describe_cursor_columns för en beskrivning av attributen i resultatuppsättningen som returneras av markören. Använd sp_describe_cursor_tables för en rapport över bastabellerna som pekaren refererar till. sp_describe_cursor rapporterar samma information som sp_cursor_list, men endast för en specificerad markör.

Permissions

Exekveringsbehörigheter är som standard den publika rollen.

Examples

Följande exempel öppnar en global markör och används sp_cursor_list för att rapportera om markörens attribut.

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