Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Rapporterar attributen för en servermarkör.
Transact-SQL syntaxkonventioner
Syntax
sys.sp_describe_cursor
[ @cursor_return = ] cursor_return OUTPUT
, [ @cursor_source = ] { N'local' | N'global' | N'*cursor_source*' }
, [ @cursor_identity = ] N'cursor_identity'
[ ; ]
Arguments
[ @cursor_return = ] cursor_return UTGÅNG
Namnet på en deklarerad markörvariabel för att ta emot markörens utdata.
@cursor_return är en OUTPUT parameter av typen int, utan standard, och får inte vara kopplad till några markörer när sp_describe_cursor den anropas. Markören som returneras är en rullbar, dynamisk, skrivskyddad markör.
[ @cursor_source = ] { N'local' | N'global' | N'cursor_source' }
Specificerar om markören som rapporteras anges genom att använda namnet på en lokal markör, en global markör eller en markörvariabel. @cursor_source är nvarchar(30), utan standard.
[ @cursor_identity = ] N'cursor_identity'
Namnet på en markör skapas av ett DECLARE CURSOR uttalande.
@cursor_identity är nvarchar(128), utan standard.
Om markören har
LOCALnyckelordet, eller är standardinställd påLOCAL, är @cursor_identity .localOm markören har
GLOBALnyckelordet, eller är standardinställd påGLOBAL, är @cursor_identity .global@cursor_identity kan också vara namnet på en API-serverpekare som öppnas av en ODBC-applikation och sedan namnges genom att anropaSQLSetCursorName.Annars är @cursor_identity namnet på en markörvariabel kopplad till en öppen markör.
Returnera kodvärden
None.
Markörer återvände
sp_describe_cursor kapslar in sin resultatmängd i en Transact-SQL cursor utgångsparameter. Detta möjliggör att Transact-SQL batcher, lagrade procedurer och triggers kan arbeta med utdata en rad i taget. Detta innebär också att proceduren inte kan anropas direkt från databas-API-funktioner. Utdataparametern cursor måste vara bunden till en programvariabel, men databas-API:erna stöder inte bindningsparametrar cursor eller variabler.
Följande tabell visar formatet på markören som returneras genom att använda sp_describe_cursor. Formatet på markören är detsamma som formatet som returneras genom att använda sp_cursor_list.
| Kolumnnamn | Datatyp | Description |
|---|---|---|
reference_name |
sysname | Namnet används 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å variabeln. |
cursor_name |
sysname | Namnet på markören från ett DECLARE CURSOR uttalande. Om markören skapades genom att sätta en markörvariabel till en markör cursor_name , returnerar namnet på markörvariabeln. I tidigare versioner av SQL Server returnerar denna utdatakolumn ett systemgenererat namn. |
cursor_scope |
tinyint | 1 = LOCAL2 = GLOBAL |
status |
int | 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 |
tinyint |
1 = Okänslig (eller statisk)2 = Tangentuppsättning3 = Dynamisk4 = Spola fram |
concurrency |
tinyint |
1 = Skrivskyddat2 = Scrolllås3 = Optimistisk |
scrollable |
tinyint |
0 = Endast framåt1 = Rullbart |
open_status |
tinyint |
0 = Stängd1 = Öppet |
cursor_rows |
decimal(10,0) | Antal kvalificerade rader 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 = Ingen hämtning skedde på markören. |
column_count |
smallint | Antal kolumner i markörresultatuppsättningen. |
row_count |
decimal(10,0) | Antalet rader påverkas av den senaste operationen på markören. För mer information, se @@ROWCOUNT. |
last_operation |
tinyint | Sista operationen utförd på markören:0 = Inga operationer utfördes på markören.1 = OPEN2 = FETCH3 = INSERT4 = UPDATE5 = DELETE6 = CLOSE7 = DEALLOCATE |
cursor_handle |
int | Ett unikt värde för markören inom serverns omfattning. |
Remarks
sp_describe_cursor beskriver attributen som är globala för en servermarkör, såsom möjligheten att scrolla och uppdatera. 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. För att få en rapport över de Transact-SQL servermarkörerna som är synliga på anslutningen, använd sp_cursor_list.
En DECLARE CURSOR sats kan begära en markörtyp som SQL Server inte kan stödja med satsen SELECT som finns i DECLARE CURSOR. SQL Server konverterar implicit markören till en typ som den kan stödja med satsenSELECT. Om anges TYPE_WARNING i satsen DECLARE CURSOR skickar SQL Server applikationen ett informationsmeddelande om att en konvertering har slutförts.
sp_describe_cursor kan sedan anropas för att avgöra vilken typ av markör som har implementerats.
Permissions
Kräver medlemskap i offentlig roll.
Examples
Följande exempel öppnar en global markör och används sp_describe_cursor för att rapportera om markörens attribut.
USE AdventureWorks2022;
GO
-- Declare and open a global cursor.
DECLARE abc CURSOR STATIC
FOR SELECT LastName
FROM Person.Person;
OPEN abc;
-- Declare a cursor variable to hold the cursor output variable
-- from sp_describe_cursor.
DECLARE @Report AS CURSOR;
-- Execute sp_describe_cursor into the cursor variable.
EXECUTE master.dbo.sp_describe_cursor
@cursor_return = @Report OUTPUT,
@cursor_source = N'global',
@cursor_identity = N'abc';
-- Fetch all the rows from the sp_describe_cursor 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.
CLOSE @Report;
DEALLOCATE @Report;
GO
-- Close and deallocate the original cursor.
CLOSE abc;
DEALLOCATE abc;
GO