İ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