Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
Transact-SQL sunucu imlecinden belirli bir satırı alır.
Transact-SQL söz dizimi kuralları
Syntax
FETCH
[ [ NEXT | PRIOR | FIRST | LAST
| ABSOLUTE { n | @nvar }
| RELATIVE { n | @nvar }
]
FROM
]
{ { [ GLOBAL ] cursor_name } | @cursor_variable_name }
[ INTO @variable_name [ ,...n ] ]
Arguments
NEXT
Geçerli satırın hemen ardından sonuç satırını döndürür ve geçerli satırı döndürülen satıra artırır. İmleç FETCH NEXT üzerinde ilk getirme ise, sonuç kümesindeki ilk satırı döndürür.
NEXT varsayılan imleç getirme seçeneğidir.
PRIOR
Geçerli satırın hemen önündeki sonuç satırını döndürür ve geçerli satırı döndürülen satıra geri döndürür. bir FETCH PRIOR imleç üzerinde ilk getirme ise, hiçbir satır döndürülür ve imleç ilk satırdan önce konumlandırılmış olarak bırakılır.
FIRST
İmleçteki ilk satırı döndürür ve geçerli satır yapar.
LAST
İmleçteki son satırı döndürür ve geçerli satır yapar.
MUTLAK { n| @nvar}
N veya @nvar pozitifse, imlecin önünden n satır döndürür ve döndürülen satırı yeni geçerli satır yapar.
N veya @nvar negatifse, imlecin sonundan önceki n satırı döndürür ve döndürülen satırı yeni geçerli satır yapar.
N veya @nvar 0 ise, satır döndürülür.
n bir tamsayı sabiti, @nvar ise smallint, tinyint veya int olmalıdır.
RELATIVE { n| @nvar}
N veya @nvar pozitifse, geçerli satırın ötesindeki n satırı döndürür ve döndürülen satırı yeni geçerli satır yapar.
N veya @nvar negatifse, geçerli satırdan önceki n satırı döndürür ve döndürülen satırı yeni geçerli satır yapar.
n veya @nvar 0 ise, geçerli satırı döndürür. n FETCH RELATIVEnvar negatif sayı olarak ayarlanırsa veya bir imleç üzerinde yapılan ilk getirmede 0 olarak belirtilirse, hiçbir satır döndürülür.
n bir tamsayı sabiti, @nvar ise smallint, tinyint veya int olmalıdır.
GLOBAL
cursor_name genel bir imleç başvurduğunu belirtir.
cursor_name
Getirme işleminin yapılması gereken açık imlecin adıdır. Adı cursor_name olan hem genel hem de yerel bir imleç varsa, GENEL belirtilirse genel imleç ve GENEL belirtilmezse yerel imleç cursor_name.
@
cursor_variable_name
Getirme işleminin yapılması gereken açık imleçle başvuran bir imleç değişkeninin adıdır.
INTO @variable_name[ ,... n]
Getirme sütunlarından gelen verilerin yerel değişkenlere yerleştirilmesine izin verir. Listedeki her değişken soldan sağa imleç sonuç kümesindeki ilgili sütunla ilişkilendirilir. Her değişkenin veri türü, karşılık gelen sonuç kümesi sütununun veri türüyle eşleşmeli veya desteklenen bir örtük dönüştürme olmalıdır. Değişken sayısı, imleç seçme listesindeki sütun sayısıyla eşleşmelidir.
Remarks
SCROLL Seçenek ISO stil DECLARE CURSOR deyiminde belirtilmemişse, NEXT desteklenen tek FETCH seçenektir. ISO stilinde SCROLLbelirtilirseDECLARE CURSOR, tüm FETCH seçenekler desteklenir.
Transact-SQL DECLARE imleç uzantıları kullanıldığında, bu kurallar geçerlidir:
FORWARD_ONLYVeyaFAST_FORWARDbelirtilirse,NEXTdesteklenen tekFETCHseçenektir.veya belirtilmezse
DYNAMICve biriFORWARD_ONLY,FAST_FORWARDveyaKEYSETbelirtildiyse, tümSTATICseçenekler desteklenir.SCROLLFETCHDYNAMIC SCROLLimleçler dışındakiFETCHtümABSOLUTEseçenekleri destekler.
İşlev, @@FETCH_STATUS son FETCH deyimin durumunu bildirir. Aynı bilgiler, sp_describe_cursor tarafından döndürülen imleçteki fetch_status sütununa kaydedilir. Bu durum bilgileri, bu verilere karşı herhangi bir işlem denemeden önce bir FETCH deyimi 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).
Permissions
Geçerli bir kullanıcı için FETCH varsayılan izinler.
Examples
A. Basit bir imleçte FETCH kullanma
Aşağıdaki örnek, tablodaki satırlar için ile başlayan Person.Personve B satırlarda FETCH NEXT adım adım ilerleten bir soyadına sahip basit bir imleç bildirir. deyimleri, FETCH içinde DECLARE CURSOR tek satırlı sonuç kümesi olarak belirtilen sütunun değerini döndürür.
USE AdventureWorks2022;
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. Değerleri değişkenlerde depolamak için FETCH kullanma
Aşağıdaki örnek, A örneğine benzer, ancak deyimlerin FETCH çıkışı doğrudan istemciye döndürülmek yerine yerel değişkenlerde depolanır. deyimi PRINT , değişkenleri tek bir dizede birleştirir ve istemciye döndürür.
USE AdventureWorks2022;
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. SCROLL imlecini bildirme ve diğer FETCH seçeneklerini kullanma
Aşağıdaki örnek, , , SCROLLLASTve PRIOR seçenekleri aracılığıyla RELATIVEtam kaydırma özelliklerine izin veren bir ABSOLUTE imleç oluşturur.
USE AdventureWorks2022;
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
Ayrıca Bkz.
CLOSE (Transact-SQL)
DEALLOCATE (Transact-SQL)
İMLEÇ BILDIRME (Transact-SQL)
AÇIK (Transact-SQL)