Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:SQL Server
Azure SQL Database
Felügyelt Azure SQL-példány
SQL-adatbázis a Microsoft Fabricben
Eltávolít egy kurzorhivatkozást. Az utolsó kurzorhivatkozás felszabadításakor a Microsoft SQL Server felszabadítja a kurzort tartalmazó adatstruktúrákat.
Transact-SQL szintaxis konvenciók
Syntax
DEALLOCATE { { [ GLOBAL ] cursor_name } | @cursor_variable_name }
Arguments
cursor_name
Egy már deklarált kurzor neve. Ha mind a globális, mind a helyi kurzor cursor_name szerepel a nevükben,cursor_name a globális kurzorra hivatkozik, ha GLOBAL meg van adva, és ha GLOBAL nincs megadva, a helyi kurzorra.
@
cursor_variable_name
A kurzorváltozó neve.
@
cursor_variable_namekurzor típusúnak kell lennie.
Remarks
A kurzorokon működő utasítások kurzornévvel vagy kurzorváltozóval hivatkoznak a kurzorra.
DEALLOCATE eltávolítja a kurzor és a kurzor neve vagy a kurzor változója közötti társításokat. Ha egy név vagy változó az utolsó, amely a kurzorra hivatkozik, a kurzor felszabadítva lesz, és a kurzor által használt erőforrások felszabadulnak. A lekérések elkülönítésének védelmére használt görgetőzárak a következő helyen DEALLOCATEszabadulnak fel: . A frissítések védelmére szolgáló tranzakciózárak, beleértve a kurzoron keresztüli elhelyezésű frissítéseket is, a tranzakció végéig maradnak.
Az DECLARE CURSOR utasítás lefoglalja és társítja a kurzort egy kurzor nevével.
DECLARE abc SCROLL CURSOR FOR
SELECT * FROM Person.Person;
Miután a kurzornév hozzá lett rendelve egy kurzorhoz, a név nem használható egy másik, azonos hatókörű (globális vagy helyi) kurzorhoz, amíg el nem helyezi a kurzort.
A kurzorváltozó a kurzorhoz két módszer egyikével van társítva:
Név alapján egy
SETolyan utasítással, amely a kurzort egy kurzorváltozóra állítja.DECLARE @MyCrsrRef CURSOR; SET @MyCrsrRef = abc;A kurzort úgy is létrehozhatja és társíthatja egy változóhoz, hogy nincs definiálva a kurzor neve.
DECLARE @MyCursor CURSOR; SET @MyCursor = CURSOR LOCAL SCROLL FOR SELECT * FROM Person.Person;
Az DEALLOCATE <@cursor_variable_name> utasítás csak az elnevezett változó kurzorra mutató hivatkozását távolítja el. A változó nem lesz felszabadítva, amíg ki nem lép a hatókörből a köteg, a tárolt eljárás vagy az eseményindító végén. Egy DEALLOCATE <@cursor_variable_name> utasítás után a változó a SET utasítással társítható egy másik kurzorhoz.
USE AdventureWorks2022;
GO
DECLARE @MyCursor CURSOR;
SET @MyCursor = CURSOR LOCAL SCROLL FOR
SELECT * FROM Sales.SalesPerson;
DEALLOCATE @MyCursor;
SET @MyCursor = CURSOR LOCAL SCROLL FOR
SELECT * FROM Sales.SalesTerritory;
GO
A kurzorváltozót nem kell explicit módon felszabadítani. A változó implicit módon lesz felszabadítva, amikor kimegy a hatókörből.
Permissions
DEALLOCATE Az alapértelmezett engedélyek bármely érvényes felhasználóra vonatkozóan.
Examples
Az alábbi szkript bemutatja, hogyan maradnak a kurzorok a vezetéknévig vagy a hivatkozó változó felszabadításáig.
USE AdventureWorks2022;
GO
-- Create and open a global named cursor that
-- is visible outside the batch.
DECLARE abc CURSOR GLOBAL SCROLL FOR
SELECT * FROM Sales.SalesPerson;
OPEN abc;
GO
-- Reference the named cursor with a cursor variable.
DECLARE @MyCrsrRef1 CURSOR;
SET @MyCrsrRef1 = abc;
-- Now deallocate the cursor reference.
DEALLOCATE @MyCrsrRef1;
-- Cursor abc still exists.
FETCH NEXT FROM abc;
GO
-- Reference the named cursor again.
DECLARE @MyCrsrRef2 CURSOR;
SET @MyCrsrRef2 = abc;
-- Now deallocate cursor name abc.
DEALLOCATE abc;
-- Cursor still exists, referenced by @MyCrsrRef2.
FETCH NEXT FROM @MyCrsrRef2;
-- Cursor finally is deallocated when last referencing
-- variable goes out of scope at the end of the batch.
GO
-- Create an unnamed cursor.
DECLARE @MyCursor CURSOR;
SET @MyCursor = CURSOR LOCAL SCROLL FOR
SELECT * FROM Sales.SalesTerritory;
-- The following statement deallocates the cursor
-- because no other variables reference it.
DEALLOCATE @MyCursor;
GO
Lásd még:
ZÁRT (Transact-SQL)
Cursors
DECLARE @local_variable (Transact-SQL)
HOZNI (Transact-SQL)
NYISD (Transact-SQL)