Provided by:
manpages-tr_1.0.5.1-1.1_all 
İSİM
CREATE AGGREGATE - yeni bir ortak değer işlevi tanımlar
KULLANIM
CREATE AGGREGATE isim (
BASETYPE = girdi_veri_türü,
SFUNC = durum_iÅŸlevi,
STYPE = durum_veri_türü
[ , FINALFUNC = son_iÅŸlev ]
[ , INITCOND = ilk_deÄŸer ]
)
AÇIKLAMA
CREATE AGGREGATE yeni bir ortak değer işlevi tanımlar. Temel ve çok
kullanılan ortak değer işlevleri dağıtıma dahil edilmiş ve bunlar
http://www.postgresql.org/docs/8.0/static/functions-aggregate.html
adresinde açıklanmıştır. Eğer yeni türlerin tanımlanması ya da
dağıtımla gelmeyen bir ortak değer işlevine ihtiyaç olursa istenen
özellikleri sağlamak için CREATE AGGREGATE kullanılabilir.
Bir ÅŸema ismi verilmiÅŸse (CREATE AGGREGATE myschema.myagg ... gibi),
ortak değer işlevi belirtilen şema içinde oluşturulur.
Bir ortak değer işlevi, ismi ve girdi veri türü ile tanımlanır. Eğer
iki ortak değer işlevi farklı veri türleri ile çalışıyorlarsa, aynı
şema içinde aynı isimle tanımlanabilir. Ayrıca, bir ortak değer işlevi
gerek ismi gerekse girdi veri türü bakımından aynı şema içindeki
sıradan işlevlerden de farklı olmalıdır.
Bir ortak değer işlevi bir ya da iki sıradan işlevden oluşur:
durum_işlevi ile belirtilen bir durum geçiş işlevi ve son_işlev ile
isteğe bağlı olarak belirtilebilen bir son hesap işlevi. Bunlar şöyle
kullanılır:
durum_işlevi( dahili_durum, sonraki-veri-öğesi )
---> sonraki-dahili-durum
son_iÅŸlev( dahili_durum )
---> ortak-deÄŸer
PostgreSQL ortak değerin o anki dahili durumunu saklamak üzere
durum_veri_türü ile belirtilen veri türünde bir geçici değişken
oluşturur. Her girdi öğesinde, yeni bir dahili durum değerini
hesaplamak üzere durum geçiş işlevi çağrılır. Tüm veri işlendikten
sonra, döndürülecek ortak değeri hesaplamak için son işlev çağrılır.
Eğer bir son işlev yoksa, son durum değeri olduğu gibi döndürülür.
Bir ortak değer işlevine dahili durum değeri için bir ilk değer olarak,
bir ilk_değer sağlanabilir. Bu veritabanında text türünde bir sütun
olarak belirtilir ve saklanır, fakat bu, durum değerinin veri türündeki
bir sabitin geçerli bir harici gösterimi olmalıdır. Eğer verilmezse,
durum değeri NULL olarak ayrılır.
Eğer durum geçiş işlevi argümanlarına bağımlı olarak bildirilmişse,
NULL girdilerle çağrılamaz. Böyle bir geçiş işleviyle cümle
çalıştırıldığında davranışı şöyle açıklayabiliriz. NULL girdi değerleri
yoksayılır (işlev çağrılmamıştır ve önceki durum değeri beklemektedir).
EÄŸer ilk durum deÄŸeri NULL ise, ilk NULL olmayan girdi deÄŸeri durum
değeri yapılır ve geçiş işlevi ikinci NULL olmayan girdi değeriyle
çağrılır. Bu, max gibi ortak değer işlevlerini gerçeklerken
kullanışlıdır. Bu davranış sadece durum_veri_türü ile girdi_veri_türü
aynı ise kullanılabilir. Bu veri türleri farklı olduğunda, ya NULL
olmayan bir ilk_değer ya da argümanlarına bağımlı olmayan bir geçiş
işlevi sağlamalısınız.
Eğer durum geçiş işlevi argümanlarına bağımlı değilse, koşulsuz olarak
her girdi değeriyle çağrılabilecek, NULL girdi değerleriyle ve kendinin
NULL geçiş değerleriyle çalışacaktır. Bu, işlev yazarının, ortak
değerin boş değerlerle elde edilebilmesi bakımından tam denetime sahip
olmasıyla mümkün olur.
Eğer son işlev argümanlarına bağımlı olarak bildirilmişse, son durum
değeri NULL olduğunda çağrılmayacak; bunun yerine kendiliğinden bir
NULL sonuç döndürülecektir. (Şüphesiz bu, argümanlarına bağımlı olarak
işlem yapabilen işlevler için normal bir davranıştır.) Her durumda, bir
son işlev bir NULL değer döndürecek bir seçeneğe sahip olabilir.
Örneğin, avg işlevinin son işlevi sıfır girdi satırı varsa, NULL
döndürür.
PARAMETRELER
isim OluÅŸturulacak ortak deÄŸer iÅŸlevinin ismi (ÅŸema nitelemeli
olabilir).
girdi_veri_türü
Bu ortak değer işlevinin üzerinde işlem yapacağı girdinin veri
türü. Girdi değerlerinin türüyle ilgilenmeyen bir ortak değer
işlevi için (count(*) gibi), "ANY" olarak belirtilebilir.
durum_iÅŸlevi
Her girdi değeri için çağrılacak durum geçiş işlevinin ismi. Bu
normalde iki argümanlı bir işlevdir; ilk argümanı
durum_veri_türü türünde, ikincisi ise girdi_veri_türü
türündedir. Eğer bir ortak değer işlevi girdi veri türü ile
ilgilenmiyorsa işlev durum_veri_türü türünde tek bir argüman
alabilir. Her durumda işlev durum_veri_türü türünde bir değer
döndürmelidir. Bu işlev o anki durum değerini ve o anki girdi
veri öğesini alıp, sonraki durum değeri ile döner.
durum_veri_türü
Durum geçiş işlevinin durum değerinin veri türü.
son_iÅŸlev
Tüm girdi değerleri işleme sokulup, ortak değer hesaplanacağı
zaman çağrılan son işlevin ismi. İşlev durum_veri_türü türünde
tek bir argüman almalıdır. Ortak değer işlevinin dönüş türü bu
işlevin dönüş türü olarak tanımlanır. Eğer son_işlev
belirtilmemişse, son durum değeri işlevin dönüş değeri olarak
kullanılır ve dönüş türü durum_veri_türü olur.
ilk_deÄŸer
Durum değeri için ilk değer. durum_veri_türü türünde kabul
edilebilecek bir dizge sabit olmalıdır. Belirtilmezse, durum
değeri NULL olarak ayrılır.
CREATE AGGREGATE deyiminin parametrelerini tam da yukarıdaki sırasıyla
yazmak şart değildir, istenen sırada yazılabilir.
ÖRNEKLER
http://www.postgresql.org/docs/8.0/static/xaggr.html adresine bakınız.
UYUMLULUK
CREATE AGGREGATE bir PostgreSQL oluşumudur. SQL standardı kullanıcı
tanımlı ortak değer işlevlerini desteklememektedir.
İLGİLİ BELGELER
ALTER AGGREGATE [alter_aggregate(7)],
DROP AGGREGATE [drop_aggregate(7)].
ÇEVİREN
Nilgün Belma Bugüner <nilgun (at) belgeler·gen·tr>, Nisan 2005