Lists: | pgsql-tr-genel |
---|
From: | "Ahmet" <corsairsoft(at)gmail(dot)com> |
---|---|
To: | "PostgreSQL" <pgsql-tr-genel(at)postgresql(dot)org> |
Subject: | Öneri |
Date: | 2006-03-25 14:02:31 |
Message-ID: | 001c01c65014$c4ccc54000000a@asus |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-tr-genel |
Liste her konuya açıktır ve liste yardımcı olma hevesiyle tutuşan cevherlerle dolu :)
procedure ile belirli şartları sağlayan bir tek satır döner.
birden çok satır istediğinizde zaten kayıt seti hatası verecektir
benim önerim böyle bir kullanım yerine
1 - İşlem gerektiren kısımları procedürler şeklinde tanımlamanız
2 - Kayıt çekerken ise view veya select sorguları ile işlem yapmanız.
bir select örneği vereyim ancak dediğim gibi tek satır dönecektir...
isimler tablosu
id isim
1 Ahmet
2 Mehmet
.....
.....
CREATE FUNCTION ornek(integer) RETURNS text AS '
DECLARE
no ALIAS FOR $1;
isim text;
BEGIN
SELECT INTO isim FROM isimler WHERE id=no;
RETURN isim;
END;
LANGUAGE 'plpgsql';
Seçiminize gelince gerçekten akıllıca olmuş ben 4 yıldır MySQL / PostgreSQL kullanıyordum
şimdi ise yazdığımız MRP / ERP projelerinde PostgreSQL'in eline su dökebilecek bir veritabanı tanımıyorum
Bunu zamanla sizde göreceksiniz.
From: | Volkan YAZICI <yazicivo(at)ttnet(dot)net(dot)tr> |
---|---|
To: | Ahmet <corsairsoft(at)gmail(dot)com> |
Cc: | pgsql-tr-genel(at)postgresql(dot)org |
Subject: | Re: Öneri |
Date: | 2006-03-25 16:41:48 |
Message-ID: | 20060325164148.GB483@alamut |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-tr-genel |
On Mar 25 04:02, Ahmet wrote:
> procedure ile belirli şartları sağlayan bir tek satır döner.
> birden çok satır istediğinizde zaten kayıt seti hatası verecektir.
Bu yanlış bir bilgiye nereden vardınız bilmiyorum ama kesinlikle böyle
bir şey söz konusu değil. Prosedürler ile de birden fazla satırı çok
rahatlıkla döndürebilirsiniz. Basit bir örnek olması açısından aşağıdaki
kod parçasını göz önüne alabilirsiniz.
BEGIN;
CREATE FUNCTION return_row() RETURNS SETOF integer AS $$
DECLARE
val integer;
BEGIN
FOR val IN SELECT (S.i * 3) AS mycol FROM generate_series(1, 3) AS S(i)
LOOP
RETURN NEXT val;
END LOOP;
END;
$$ LANGUAGE plpgsql STRICT IMMUTABLE;
SELECT * FROM return_row();
-- return_row
-- ------------
-- 3
-- 6
-- 9
-- (3 rows)
ROLLBACK;
> 1 - İşlem gerektiren kısımları procedürler şeklinde tanımlamanız
> 2 - Kayıt çekerken ise view veya select sorguları ile işlem yapmanız.
Bence böyle bir öneride bulunmadan önce dereyi görmenin en doğrusu
olduğu yönünde düşüncem. Aslında yukarıdaki düşüncenin, prosedürler
satır döndüremez fikri ile yola çıkıldığından, baştan yanlış olma
ihtimali çok yüksek. Fakat yine de kimi durumlar için uygulanabilirliği
olabilir.
İyi çalışmalar.
From: | "Adnan DURSUN" <a_dursun(at)hotmail(dot)com> |
---|---|
To: | "Ahmet" <corsairsoft(at)gmail(dot)com>, "PostgreSQL" <pgsql-tr-genel(at)postgresql(dot)org> |
Subject: | Re: [pgsql-tr-genel] Öneri |
Date: | 2006-03-26 17:57:18 |
Message-ID: | BAY106-DAV1240A64C828B8592358F07FADD0@phx.gbl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-tr-genel |
----- Original Message -----
From: Ahmet
To: PostgreSQL
Sent: Saturday, March 25, 2006 5:02 PM
Subject: [pgsql-tr-genel] Öneri
>benim önerim böyle bir kullanım yerine
>1 - İşlem gerektiren kısımları procedürler şeklinde tanımlamanız
>2 - Kayıt çekerken ise view veya select sorguları ile işlem yapmanız.
>bir select örneği vereyim ancak dediğim gibi tek satır dönecektir...
Veritabanında PL/PgSQL veya SQL dilini kullanarak "stored function" lar yazabilirsiniz.
Bunlar size bir rowset döndürebilirler. Bu konu ile ilgili ; http://www.postgresql.org.tr/moin.cgi/Belgeler/PLpgsql
adresinindeki belgeleri inceleyin veya PostgreSQL yardım dökümanına bir göz atın. Verdiğim adresteki
belgeleri hazırlarken sizlerin önerilerinizi de dikkate almaya hazırım.
İyi Çalışmalar
Adnan DURSUN
ASRIN Bilişim Ltd.