sys.sp_cursor_list (Transact-SQL)

platí pro:SQL Server

Hlásí atributy serverových kurzorů, které jsou momentálně otevřené pro připojení.

Transact-SQL konvence syntaxe

Syntax

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

Arguments

[ @cursor_return = ] cursor_return VÝSTUP

Název deklarované kurzorové proměnné. @cursor_return je OUTPUT parametr typu CURSOR. Kurzor je posuvný, dynamický, pouze čtetelný kurzor.

[ @cursor_scope = ] cursor_scope

Specifikuje úroveň kurzorů, které je třeba hlásit. @cursor_scope je int, bez výchozího nastavení, a může být jednou z těchto hodnot.

Value Description
1 Nahlaste všechny místní kurzory.
2 Nahlaste všechny globální kurzory.
3 Nahlaste jak lokální, tak globální kurzory.

Hodnoty návratového kódu

Žádné.

Kurzory se vrátily

sp_cursor_list vrací svou zprávu jako výstupní parametr Transact-SQL kurzoru, nikoli jako sadu výsledků. To umožňuje Transact-SQL dávkám, uloženým procedurám a triggerům pracovat s výstupem po řádcích po řadách. To také znamená, že proceduru nelze volat přímo z funkcí databázového API. Výstupní parametr kurzoru musí být vázán na programovou proměnnou, ale databázová API nepodporují vazby parametrů kurzoru nebo proměnných.

Toto je formát kurzoru vráceného .sp_cursor_list Formát kurzoru je stejný jako formát vrácený .sp_describe_cursor

Název sloupce Datový typ Description
reference_name sysname Název dříve označoval kurzor. Pokud odkaz na kurzor byl přes jméno uvedené ve DECLARE CURSOR výroku, referenční název je stejný jako název kurzoru. Pokud odkaz na kurzor probíhal přes proměnnou, název odkazu je názvem proměnné kurzoru.
cursor_name sysname Název kurzoru z DECLARE CURSOR výroku. V SQL Server, pokud byl kurzor vytvořen nastavením proměnné kurzoru na kurzorcursor_name, vrátí název proměnné kurzoru. V předchozích verzích tento výstupní sloupec vracel systém generovaný název.
cursor_scope smallint 1 = LOCAL
2 = GLOBAL
status smallint Stejné hodnoty, jaké uvádí systémová CURSOR_STATUS funkce:

1 = Kurzor odkazovaný názvem kurzoru nebo proměnnou je otevřený. Pokud je kurzor necitlivý, statický nebo nastavený na klávesy, je to alespoň jeden řádek. Pokud je kurzor dynamický, výsledná množina má nula nebo více řádků.

0 = Kurzor, na který odkazuje jméno kurzoru nebo proměnná, je otevřený, ale nemá žádné řádky. Dynamické kurzory tuto hodnotu nikdy nevrátí.

-1 = Kurzor odkazovaný jménem nebo proměnnou kurzoru je uzavřený.

-2 = Platí pouze pro proměnné kurzora. K proměnné není přiřazen žádný kurzor. Možná parametr OUTPUT přiřadil kurzor proměnné, ale uložený postup kurzor uzavřel před návratem.

-3 = Kurzor nebo proměnná s tímto jménem neexistuje, nebo proměnná kurzoru nemá přiřazený kurzor.
model smallint 1 = Necitlivé (nebo statické)
2 = Klíčová sada
3 = Dynamické
4 = Přetočte se dopředu
concurrency smallint 1 = Pouze pro čtení
2 = Zámky svitků
3 = Optimistický
scrollable smallint 0 = Pouze útok
1 = Posouvatelné
open_status smallint 0 = Uzavřeno
1 = Open
cursor_rows int Počet kvalifikovaných řádků ve výsledné sadě. Pro více informací viz @@CURSOR_ROWS.
fetch_status smallint Stav posledního načtení na tomto kurzoru. Pro více informací viz @@FETCH_STATUS:

0 = Aportování úspěšné.
-1 = Načtení selhalo nebo je mimo hranice kurzoru.
-2 = Požadovaný řádek chybí.
-9 = Na kurzoru není žádné aportování.
column_count smallint Počet sloupců v sadě výsledků kurzoru.
row_count smallint Počet řádků ovlivněných poslední operací na kurzoru. Pro více informací viz @@ROWCOUNT.
last_operation smallint Poslední operace provedená na kurzoru:

0 = Na kurzoru nebyly provedeny žádné operace.
1 = OPEN
2 = FETCH
3 = INSERT
4 = UPDATE
5 = DELETE
6 = CLOSE
7 = DEALLOCATE
cursor_handle int Unikátní hodnota, která identifikuje kurzor v rámci serveru.

Poznámky

sp_cursor_list vytvoří seznam aktuálních serverových kurzorů otevřených spojením a popisuje atributy globální pro každý kurzor, jako je posouvatelnost a aktualizabilnost kurzoru. Kurzory uvedené podle sp_cursor_list zahrnují:

  • Transact-SQL kurzory serveru.

  • API serverové kurzory otevírá ODBC aplikace, která je následně vyvolána SQLSetCursorName pro pojmenování kurzoru.

Použijte sp_describe_cursor_columns pro popis atributů výsledné množiny vrácených kurzorem. Použijte sp_describe_cursor_tables pro reporty základních tabulek odkazovaných kurzorem. sp_describe_cursor hlásí stejné informace jako sp_cursor_list, ale pouze pro specifikovaný kurzor.

Permissions

Povolení pro spuštění se automaticky nastaví na veřejnou roli.

Examples

Následující příklad otevírá globální kurzor a slouží sp_cursor_list k hlášení atributů kurzoru.

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