İSİM¶
DECLARE - bir gösterici tanımlar
KULLANIM¶
DECLARE isim [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]
CURSOR [ { WITH | WITHOUT } HOLD ] FOR sorgu
[ FOR { READ ONLY | UPDATE [ OF sütun [, ...] ] } ]
AÇIKLAMA¶
DECLARE büyükçe bir sorgunun
zamanaşımı içinde az sayıda
satırın bir kullanıcı tarafından
çekilmesi için kullanılabilecek göstericilerin
bildirimini yapmakta kullanılır.
FETCH [
fetch(7)]
kullanılarak veri ister metin ister ikilik biçimde
göstericiden döndürülebilir.
Normal göstericiler
SELECT'in ürettiği gibi veriyi
metin biçiminde döndürür. Veri doğal
ortamında ikilik biçimde saklandığından,
sistemin metin biçimine dönüşüm
yapması gerekir. Metin biçiminde gelen veriyi istemci
uygulamanın, üzerinde işlem yapabilmek için ikilik
biçime dönüştürmesi gerekebilir. Bundan
başka metin biçimindeki veri çoğunlukla ikilik
biçimdeki veriden daha fazla yer kaplar. İkilik
göstericiler veriyi daha kolay işlenebilen ikilik
gösterimde döndürürler. Ancak, veriyi metin
biçiminde göstermeyi tasarlıyorsanız, verinin
metin biçiminde alınması istemci tarafında daha az
çaba gerektirecektir.
Bir örnek vermek gerekirse, bir sorgunun bir tamsayı değer
içeren bir sütundan veri döndürmesini
istiyorsanız, bir öntanımlı gösterici ile 1
içeren bir dizge alırken, bir ikilik gösterici bu
değerin 4 baytlık alan içeren dahili gösterimini
döndürecektir (big-endian -- en kıymetli bayt ilk).
İkilik göstericiler dikkatli kullanılmalıdır.
psql dahil çoğu uygulama, ikilik göstericileri
bilmez ve veriyi metin biçiminde döndürür.
- Bilgi:
- "Gelişmiş sorgulama" (extended query)
protokolünü kullanan bir istemci uygulaması, verilen
bir FETCH komutuyla, Bind protokolünün veriyi ikilik
biçimde mi yoksa metin biçiminde mi
alacağını belirtir. Bu seçim
göstericinin bildirilmesi sırasında belli bir
biçime zorlanabilir. Gelişmiş sorgu protokolü
kullanarak bir ikilik gösterici alınabileceğini
ummak, bu nedenle atıldır; her gösterici metin ya da
ikilik olarak ele alınabilir.
PARAMETRELER¶
- isim
- Oluşturulacak göstericinin ismi.
- BINARY
- Göstericinin metin değil ikilik biçimde veri
döndürmesini sağlar.
- INSENSITIVE
- Göstericiden alınan verinin, gösterici etkinken,
soruladığı tablolardaki güncellemelerden
etkilenmeyeceğini belirtir. PostgreSQL'de tüm
göstericiler böyledir ve bu sözcük
şimdilik etkisizdir, sadece SQL standardıyla uyum
için vardır.
- SCROLL, NO SCROLL
- Göstericinin satırları sıralı olmayan
biçimde döndürmek için
kullanılabileceğini belirtmek için
kullanılır. SCROLL deyiminin belirtilmesi, sorgunun
çalıştırılma planının
karmaşıklığına bağlı
olarak, sorgunun çalışması
sırasında bir başarım kaybı
oluşturabilir. NO SCROLL ise, göstericinin
satırları sıralı olmayan biçimde
döndürmek için
kullanılamayacağını belirtir.
- WITH HOLD, WITHOUT HOLD
- WITH HOLD, göstericinin oluşturulduğu
hareketin tamamlanmasından sonra kullanılmaya devam
edilebileceğini belirtir. WITHOUT HOLD ise
göstericinin oluşturulduğu hareket
dışında
kullanılamayacağını belirtir. Ne WITHOUT
HOLD ne de WITH HOLD belirtilmişse, WITHOUT HOLD
öntanımlıdır.
- sorgu
- Gösterici tarafından döndürülecek
satırları üretecek bir SELECT cümlesi.
Geçerli sorgular hakkında bilgi edinmek için
SELECT [select(7)] kılavuz sayfasına
bakınız.
- FOR READ ONLY, FOR UPDATE
- FOR READ ONLY göstericinin salt okunur kipte
kullanılacağını belirtir. FOR UPDATE
ise göstericinin tabloları güncellemekte
kullanılacağını belirtir. Gösterici
güncellemeleri PostgreSQL'de desteklenmediğinden, FOR
UPDATE kullanımı bir hata iletisine sebep olacak, FOR
READ ONLY deyiminin ise bir etkisi olmayacaktır.
- sütun
- Gösterici tarafından güncellenecek sütunlar.
Gösterici güncellemeleri PostgreSQL'de
desteklenmediğinden, FOR UPDATE kullanımı bir
hata iletisine sebep olur.
BINARY,
INSENSITIVE ve
SCROLL sözcükleri
herhangi bir sırada kullanılabilir.
EK BİLGݶ
WITH HOLD belirtilmedikçe, bu cümle ile oluşturulan
gösterici sadece o anki hareketin içinde
kullanılmış olabilir. Bu nedenle,
WITH HOLD'suz
DECLARE bir hareket kümesinin dışında
kullanışsız olduğu gibi,
kullanıldığı takdirde PostgreSQL bir hata iletisi
üretecektir. Bir hareket kümesini tanımlamak için
BEGIN [
begin(7)],
COMMIT [
commit(7)] ve
ROLLBACK
[
rollback(7)] kullanılır.
Eğer
WITH HOLD belirtilmiş ve göstericinin
oluşturulduğu hareket baaşarıyla
tamamlanmışsa, bu gösterici aynı oturumun daha
sonraki hareketleri tarafından erişilebilir olacaktır.
(Fakat hareket kesintiye uğramış ve
tamamlanmamışsa, gösterici iptal edilir.)
WITH
HOLD ile oluşturulmuş bir gösterici, doğrudan
bir
CLOSE komutuyla ya da dolaylı olarak oturum sonunda
kapatılır. Şimdiki gerçeklenimde, böyle bir
gösterici tarafından sunulan satırlar ya geçici
bir dosyaya ya da belleğe kopyalanarak daha sonraki hareketler
için kullanılabilir kalması sağlanır.
Bir gösterici satırların geri yönde çekilmesi
için kullanılacaksa, bu gösterici bildirilirken
SCROLL seçeneği belirtilmelidir. Bu SQL
standardının gereğidir. Ancak, önceki
sürümlerle uyumluluk için, eğer
göstericinin sorgusu desteklenmek için ek bir masraf
gerektirmeyecek kadar basitse, PostgreSQL
SCROLL
olmaksızın geriye doğru satır çekmeye izin
verecektir. Yine de, uygulama geliştiriciler önerimiz,
SCROLL belirtmeden oluşturulmuş göstericilere,
geriye doğru satır çekimi için
güvenmemeleri olacaktır. Eğer,
NO SCROLL
belirtilmişse hiçbir durumda geri yönde satır
çekmeye izin verilmeyecektir.
SQL standardı sadece gömülü SQLde
göstericiler için hükümler içerir.
PostgreSQL sunucusu göstericiler için bir
OPEN deyimi
gerçeklemez; bir gösterici bildirildiği andan itibaren
açık kabul edilir. Yine de, PostgreSQL'in
gömülü SQL önişlemcisi olan
ECPG,
DECLARE ve
OPEN deyimlerini de içererek, standart SQL
uzlaşımlarını destekler.
ÖRNEKLER¶
Bir göstericiyi bildirmek için:
DECLARE liahona CURSOR FOR SELECT * FROM films;
Gösterici kullanımı ile ilgili daha fazla örnek
için
FETCH [
fetch(7)] kılavuz sayfasına
bakınız.
UYUMLULUK¶
SQL standardı sadece gömülü SQL'de ve
modüllerde göstericilere izin verir. PostgreSQL ise,
göstericilerin etkileşimli olarak kullanımına izin
verir.
SQL standardı göstericilerin tablo verisini güncellemek
için kullanımına izin verir. PostgreSQL
göstericilerinin ise hepsi salt okunurdur.
İkilik göstericiler bir PostgreSQL oluşumudur.
İLGİLİ BELGELER¶
CLOSE [
close(7)],
FETCH [
fetch(7)],
MOVE [
move(7)].
ÇEVİREN¶
Nilgün Belma Bugüner <nilgun (at)
belgeler·gen·tr>, Nisan 2005