fetch (Transact-SQL)

Belirli bir satırdan alır bir Transact-SQL server imleç.

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

Sözdizimi

FETCH 
          [ [ NEXT | PRIOR | FIRST | LAST 
                    | ABSOLUTE { n | @nvar } 
                    | RELATIVE { n | @nvar } 
               ] 
               FROM 
          ] 
{ { [ GLOBAL ] cursor_name } | @cursor_variable_name } 
[ INTO @variable_name [ ,...n ] ] 

Bağımsız değişkenler

  • SONRAKİ
    Geçerli satır ve satır geçerli satıra döndürülen artışlarla hemen sonuç satırı döndürür.GETİRME İleri imleçkarşı ilk getirme, sonuç kümesiilk satır döndürür.SONRAKİ varsayılan imleç alımı seçeneğidir.

  • ÖNCEKİ
    Geçerli satır ve satır geçerli satıra döndürülen azaltır hemen öncesindeki sonuç satırı döndürür.GETİRME önceki bir imleçkarşı ilk getirme, hiçbir satır döndürülür ve imleç sol ilk satırın öncesine konumlandırılmış.

  • İLK
    ' % S'imleç imleç içinde ilk satır döndürür ve geçerli satır yapar.

  • SON
    ' % S'imleç imleç içinde son satır döndürür ve geçerli satır yapar.

  • ABSOLUTE { n| @nvar}
    n veya @nvar pozitif, işlevi satır n imleç önde satırları ve döndürülen satır geçerli yeni satır yapar.n veya @nvar negatif, işlevi satır n imleç sonuna önce satırları ve döndürülen satır geçerli yeni satır yapar.n veya @nvar 0, hiçbir satır döndürdü.n bir tamsayı sabit olmalıdır ve @nvar olması smallint, tinyint, veya int.

  • RELATIVE { n| @nvar}
    n veya @nvar pozitif, işlevi satır n geçerli satırın satırları ve döndürülen satır geçerli yeni satır yapar.n veya @nvar negatif, işlevi satır n satırları geçerli satırda öncesinde ve döndürülen satır geçerli yeni satır yapar.n veya @nvar 0, işlevi geçerli satır.GETİRME GÖRELİ belirtilirse n veya @nvar küme için negatif sayılar veya imleçkarşı yapılan ilk getirme 0 hiçbir satır döndürülür.n bir tamsayı sabit olmalıdır ve @nvar olması smallint, tinyint, veya int.

  • GENEL
    Belirleyen cursor_name Genel imleçbaşvurur.

  • cursor_name
    Getirme yapılmalıdır açık imleç adıdır.Hem genel hem de yerel imleç ile varsa cursor_name kendi adı olarak cursor_name global belirtilirse genel imleç ve global belirtilmezse, yerel imleç .

  • @cursor_variable_name
    Bir imleç değişken adını getirme yapılmalıdır açık imleç başvuruyor.

  • INTO @variable_name,...n
    Yerel değişkenler yerleştirilecek getirme sütunlarından veri sağlar.Her değişken listesinde, soldan sağa, imleçsonuç kümesikarşılık gelen sütun ile ilişkili. Her değişkenin veri türü eşleşen veya desteklenen bir örtük dönüştürme ilgili sonuç kümesi sütunveri türü olabilir.Değişken sayısı, imleç seçin listesinde sütun sayısı eşleşmelidir.

Açıklamalar

SONRAKİ kaydırma seçeneği ISO stilinde BİLDİRMEK İMLEÇ deyimbelirtilmezse, yalnızca getirme seçeneği desteklenir.Bir ISO kaydırma belirtilirse BİLDİRMEK İMLEÇ stili, tüm getirme seçenekleri desteklenmektedir.

Zaman Transact-SQL declare imleç uzantıları kullanılır, bu kurallar uygulanır:

  • next forward_only veya fast_forward belirtilirse, yalnızca getirme seçeneği desteklenir.

  • DİNAMİK, forward_only veya fast_forward belirtilmemiş ve anahtar KÜMESİ, statik veya kaydırma biri belirtilirse, tüm getirme seçenekleri desteklenmektedir.

  • DİNAMİK scroll imleçler mutlak dışındaki tüm getirme seçenekleri destekler.

@@ fetch_status işlev deyimson getirme durumunu bildirir.Aynı bilgileri kaydedilir fetch_statusile döndürülensütun imleç sp_describe_cursor.Bu durum bilgileri, önce bu verileri karşı herhangi bir işlem girişiminde bir getirme deyim tarafından döndürülen verilerin geçerliliğini belirlemek için kullanılmalıdır.Daha fazla bilgi için, bkz. @@ fetch_status (Transact-SQL).

İzinler

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

Örnekler

A.Bir Basit imleçALIMI kullanma

Aşağıdaki örnekte satır basit imleç bildirir Person.Person tablo bir adla son ile başlayan Bve kullanır FETCH NEXT adıma üzerinden satır.FETCH İfadeleri dönüş değeri için sütun içinde belirtilen DECLARE CURSOR olarak bir tek satır sonuç kümesi.

USE AdventureWorks2008R2;
GO
DECLARE contact_cursor CURSOR FOR
SELECT LastName FROM Person.Person
WHERE LastName LIKE 'B%'
ORDER BY LastName;

OPEN contact_cursor;

-- Perform the first fetch.
FETCH NEXT FROM contact_cursor;

-- Check @@FETCH_STATUS to see if there are any more rows to fetch.
WHILE @@FETCH_STATUS = 0
BEGIN
   -- This is executed as long as the previous fetch succeeds.
   FETCH NEXT FROM contact_cursor;
END

CLOSE contact_cursor;
DEALLOCATE contact_cursor;
GO

B.GETİRME değişkenlerin değerlerini depolamak için kullanma

Aşağıdaki örnek, örnek a, çıkış dışında benzer FETCH ifadeleri doğrudan istemcidöndürülen yerine yerel değişkenler depolanır.PRINTdeyim , tek bir dize değişkenleri birleştirir ve bunları istemciverir.

USE AdventureWorks2008R2;
GO
-- Declare the variables to store the values returned by FETCH.
DECLARE @LastName varchar(50), @FirstName varchar(50);

DECLARE contact_cursor CURSOR FOR
SELECT LastName, FirstName FROM Person.Person
WHERE LastName LIKE 'B%'
ORDER BY LastName, FirstName;

OPEN contact_cursor;

-- Perform the first fetch and store the values in variables.
-- Note: The variables are in the same order as the columns
-- in the SELECT statement. 

FETCH NEXT FROM contact_cursor
INTO @LastName, @FirstName;

-- Check @@FETCH_STATUS to see if there are any more rows to fetch.
WHILE @@FETCH_STATUS = 0
BEGIN

   -- Concatenate and display the current values in the variables.
   PRINT 'Contact Name: ' + @FirstName + ' ' +  @LastName

   -- This is executed as long as the previous fetch succeeds.
   FETCH NEXT FROM contact_cursor
   INTO @LastName, @FirstName;
END

CLOSE contact_cursor;
DEALLOCATE contact_cursor;
GO

C.KAYDIRMA imleç bildirmek ve diğer getirme seçenekleri kullanarak

Aşağıdaki örnek oluşturur bir SCROLLtam kayan yetenekleri aracılığıyla izin vermek içinimleç LAST, PRIOR, RELATIVE, ve ABSOLUTE seçenekleri.

USE AdventureWorks2008R2;
GO
-- Execute the SELECT statement alone to show the 
-- full result set that is used by the cursor.
SELECT LastName, FirstName FROM Person.Person
ORDER BY LastName, FirstName;

-- Declare the cursor.
DECLARE contact_cursor SCROLL CURSOR FOR
SELECT LastName, FirstName FROM Person.Person
ORDER BY LastName, FirstName;

OPEN contact_cursor;

-- Fetch the last row in the cursor.
FETCH LAST FROM contact_cursor;

-- Fetch the row immediately prior to the current row in the cursor.
FETCH PRIOR FROM contact_cursor;

-- Fetch the second row in the cursor.
FETCH ABSOLUTE 2 FROM contact_cursor;

-- Fetch the row that is three rows after the current row.
FETCH RELATIVE 3 FROM contact_cursor;

-- Fetch the row that is two rows prior to the current row.
FETCH RELATIVE -2 FROM contact_cursor;

CLOSE contact_cursor;
DEALLOCATE contact_cursor;
GO