Aracılığıyla paylaş


(Transact-SQL) Kaldır

Bir imleç başvuruyu kaldırır.Son imleç başvuruyu ayırmanın, ' % s'imleç imleç içeren veri yapıları tarafından yayımlanan Microsoft SQL Server.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

DEALLOCATE { { [ GLOBAL ] cursor_name } | @cursor_variable_name }

Bağımsız değişkenler

  • cursor_name
    Zaten bildirilmiş bir imleçadıdır.Hem genel hem de yerel imleç ile varsa cursor_name kendi adı olarak cursor_name global belirtilmezse, global belirtilirse genel imleç ve yerel imleç başvuran.

  • @cursor_variable_name
    Adı bir cursor değişkeni.@cursor_variable_name türünde olmalıdır cursor.

Açıklamalar

İmleçler üzerinde çalışması ifadeleri imleç adı veya imleç değişken bir imleçbaşvuruda bulunmak için.deallocate imleç adı veya imleç değişken bir imleç arasındaki ilişkiyi kaldırır.Adı veya değişken imleçbaşvuran sonuncusu ise, imleç kaldırıldı ve imleç tarafından kullanılan kaynakları serbest.Kaydırma kilitleri fetches yalıtımıyla korumak için kullanılan at deallocate kurtulurlar.imleçyapılan konumlandırılmış güncelleştirmeler dahil olmak üzere güncelleştirmeleri korumak için kullanılan işlem Kilitleri işlem sonuna kadar tutulur.

BİLDİRMEK İMLEÇ deyim ayırır ve imleç imleç adı ile ilişkilendirir.

DECLARE abc SCROLL CURSOR FOR
SELECT * FROM Person.Person;

Bir imleç adı imleçile ilişkili sonra adı için aynı kapsam (genel veya yerel) başka bir imleç kullanılamaz bu imleç ayırmanın kadar.

Bir imleç değişken iki yöntemden birini kullanarak bir imleç ile ilişkilidir:

  • set deyim kullanarak adıyla bir imleç değişken bir imleç ayarlar.

    DECLARE @MyCrsrRef CURSOR
    SET @MyCrsrRef = abc
    
  • Bir imleç de oluşturulabilir ve tanımlanan imleç adı olmadan bir değişkenle ilişkilendirilmiş.

    DECLARE @MyCursor CURSOR
    SET @MyCursor = CURSOR LOCAL SCROLL FOR
    SELECT * FROM Person.Person;
    

Bir deallocate @cursor_variable_name deyim yalnızca adlandırılmış değişken başvurusu imleçkaldırır.kapsam toplu iş, saklı yordamveya tetikleyiciyi sonunda gittiği kadar değişken ayırmanın değil.Bir deallocate sonra @cursor_variable_namedeyim, değişken olabilir ilişkili set deyimkullanılarak başka bir imleç .

USE AdventureWorks2008R2;
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çıkça bırakılmasına bir imleç değişken yok.kapsamdışına çıktığında değişken örtülü olarak ayırmanın kaldırılmasından.

İzinler

Herhangi bir geçerli kullanıcı için varsayılan izinleri AYIRMASI.

Örnekler

Aşağıdaki komut dosyası, Soyadı kadar veya bunları başvuran değişken ayırmanın kadar imleçler nasıl kalıcı gösterir.

USE AdventureWorks2008R2;
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