Manpages

İSİM

FETCH − bir gösterici kullanarak bir sorgudan satırları çeker

KULLANIM

FETCH [ yön { FROM | IN } ] gösterici_ismi

burada yön ya boş ya da şunlardan biri olabilir:  

NEXT  
PRIOR  
FIRST  
LAST  
ABSOLUTE
miktar  
RELATIVE
miktar  
miktar  

ALL  
FORWARD  
FORWARD
miktar  
FORWARD ALL  
BACKWARD  
BACKWARD
miktar  
BACKWARD ALL

AÇIKLAMA

FETCH evvelce oluşturulmuş bir göstericiyi kullanarak satırları çeker.

Bir gösterici FETCH tarafından da kullanılan ortak bir konuma sahiptir. Göstericinin konumu sorgu sonucunun ilk satırının öncesinde, herhangi bir satırında veya son satırının sonrasında olabilir. İlk oluşturulduğunda bir gösterici ilk satırın öncesine konumlanır. Satırlar çekildikten sonra gösterici en son alınan satıra konumlanır. FETCH'in satırları çekip çalışması durduğunda gösterici son satırın sonrasına ya da eğer geriye çekilmişse ilk satırın öncesine konumlanır. FETCH ALL göstericiyi daima son satırın sonrasına, FETCH BACKWARD ALL ise daima ilk satırın öncesine konumlandırır.

NEXT (sonraki), PRIOR (önceki), FIRST (ilk), LAST (son), ABSOLUTE (mutlak), RELATIVE (göreli) biçimleri göstericiyi ilgili konuma taşıdıktan sonra tek bir satırı çeker. O konumda bir satır yoksa, sonuç boş olarak döner ve gösterici duruma göre ya ilk satırın öncesine ya da son satırın sonrasına konumlanır.

FORWARD (ileri) ve BACKWARD (geri) biçimleri, ileri ya da geri yönde belirtilen miktarda satırı çekmek için kullanılabilir. Gösterici son çekilen satıra konumlanmış olarak bırakılır (eğer miktar alınabilecek satır sayısından fazla ise, gösterici duruma göre son satırın sonrasına ya da ilk satırın öncesine konumlanır).

RELATIVE 0, FORWARD 0, ve BACKWARD 0 biçimlerinin hepsi gösterici hareket ettirilmeden o anki satırın çekilmesini sağlar, yani son çekilen satır yeniden çekilir. Bu, ancak, gösterici ilk satırın öncesinde ya da son satırın sonrasında değilse bir satırın çekilmesini sağlar; aksi takdirde, bir satır döndürülmez.

PARAMETRELER

yön

Çekim yönünü ve çekilecek satır sayısını tanımlar. Aşağıdakilerden biri olabilir:

NEXT

Sonraki satırı çeker. yön belirtilmezse bu öntanımlıdır.

PRIOR

Önceki satırı çeker.

FIRST

Sorgunun ilk satırını çeker (ABSOLUTE 1 ile aynıdır).

LAST

Sorgunun son satırını çeker (ABSOLUTE −1 ile aynıdır).

ABSOLUTE miktar

miktar pozitifse, sorgunun miktar'ıncı satırını; negatifse, sondan abs(miktar)'ıncı satırını çeker. miktar gereğinden büyükse, gösterici duruma göre ya ilk satırın öncesine ya da son satırın sonrasına konumlanır; özellikle, ABSOLUTE 0 göstericinin ilk satırın öncesine konumlanmasını sağlar.

RELATIVE miktar

Göstericinin konumuna göre, miktar pozitifse, sonraki miktar'ıncı satırı; negatifse, önceki abs(miktar)'ıncı satırı çeker. RELATIVE 0 o anki satırı varsa yeniden çeker.

miktar

Sonraki miktar satırı çeker (FORWARD miktar ile aynıdır).

ALL

Kalan satırların hepsini çeker (FORWARD ALL ile aynıdır).

FORWARD

Sonraki satırı çeker (NEXT ile aynıdır).

FORWARD miktar

Sonraki miktar satırı çeker. FORWARD 0 o anki satırı yeniden çeker.

FORWARD ALL

Kalan satırların hepsini çeker.

BACKWARD

Önceki satırı çeker (PRIOR ile aynı).

BACKWARD miktar

Önceki miktar satırı çeker. BACKWARD 0 o anki satırı yeniden çeker.

BACKWARD ALL

Önceki tüm satırları çeker (geriye doğru tarama).

miktar

Konumu ya da çekilecek satır sayısını belirtmek üzere kullanılan bir işaretli tamsayıdır. FORWARD ve BACKWARD için belirtilen bir negatif miktar yönün değişmesine sebep olur.

gösterici_ismi

Açık bir göstericinin ismi.

ÇIKTILAR

FETCH başarılı olduğunda şöyle bir çıktı döndürür:

FETCH miktar

Burada, miktar çekilen satırların sayısıdır (sıfır olabilir). Yalnız, psql'de komutun ismi çıktıda gösterilmez, sadece çekilen satır sayısı gösterilir.

EK BİLGİ

FETCH cümlesinin, pozitif bir miktar ile FETCH NEXT veya FETCH FORWARD biçimleri dışında bir biçimle kullanılması düşünülüyorsa, gösterici SCROLL seçeneği ile bildirilmelidir. Basit sorgular için PostgreSQL, SCROLL ile bildirilmemiş göstericilerden geriye doğru satır çekilmesine izin verir, fakat bu davranışın en iyisi olduğuna güvenmeyin. Eğer gösterici NO SCROLL ile bildirilmişse geri yönde satır çekmeye izin verilmez.

ABSOLUTE ile satır çekimleri istenen satırı bir göreli hareketle çekmekten daha hızlı değildir: temel gerçeklenim aradaki satırların tümünü bir şekilde geçmelidir. Negatif mutlak çekimlerin durumu daha bile kötüdür: Sorgunun, son satırı bulana kadar tüm satırları okuması ve buradan, çekilecek satıra kadar olan satırları tekrar geçmesi gerekir. Yine de, sorgunun başa dönmesi hızlı olur (FETCH ABSOLUTE 0 ile olduğu gibi).

Gösterici üzerinden güncelleme PostgreSQL tarafından şimdilik desteklenmemektedir.

Bir götericiyi tanımlamak için DECLARE [declare(7)] kullanılır. Veri döndürmeksizin göstericiyi hareket ettirmek için MOVE [move(7)] kullanabilirsiniz.

ÖRNEKLER

Aşağıdaki örnekte bir tablo gösterici kullanılarak incelenmektedir:

BEGIN WORK;

−− Göstericiyi bildirelim:
DECLARE liahona SCROLL CURSOR FOR SELECT * FROM films;

−− liahona göstericisinden ilk 5 satırı çekelim:
FETCH FORWARD 5 FROM liahona;  

code | title | did | date_prod | kind | len
−−−−−−−+−−−−−−−−−−−−−−−−−−−−−−−−−+−−−−−+−−−−−−−−−−−−+−−−−−−−−−−+−−−−−−−  
BL101 | The Third Man | 101 | 1949−12−23 | Drama | 01:44  
BL102 | The African Queen | 101 | 1951−08−11 | Romantic | 01:43  
JL201 | Une Femme est une Femme | 102 | 1961−03−12 | Romantic | 01:25  
P_301 | Vertigo | 103 | 1958−11−14 | Action | 02:08  
P_302 | Becket | 103 | 1964−02−03 | Drama | 02:28

−− Önceki satırı çekelim:
FETCH PRIOR FROM liahona;  

code | title | did | date_prod | kind | len
−−−−−−−+−−−−−−−−−+−−−−−+−−−−−−−−−−−−+−−−−−−−−+−−−−−−−  
P_301 | Vertigo | 103 | 1958−11−14 | Action | 02:08

−− Göstericiyi kapatıp hareketi sonlandıralım:
CLOSE liahona;
COMMIT WORK;

UYUMLULUK

SQL standardındaki FETCH deyimini sadece gömülü SQL'de kullanmak içindir. Burada açıklanan FETCH ise, veriyi bir konak değişkenine yerleştirilmiş olarak değil, bir SELECT sonucu gibi döndürür. Bunun dışında FETCH, SQL standardı ile tamamen uyumludur.

FORWARD ve BACKWARD biçimleriyle FORWARD örtük olma üzere FETCH miktar ve FETCH ALL biçimleri birer PostgreSQL oluşumudur.

SQL standardı FROM deyimine sadece ismin önünde izin verir; IN kullanımı bir PostgreSQL oluşumudur.

İLGİLİ BELGELER

CLOSE [close(7)], DECLARE [declare(7)], MOVE [move(7)].

ÇEVİREN

Nilgün Belma Bugüner <nilgun (at) belgeler·gen·tr>, Nisan 2005