postgres + zeos function problemi

Diğer veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
ahmet_sinav
Üye
Mesajlar: 263
Kayıt: 17 Nis 2004 07:44
Konum: İzmir Yeşilyurt Ulu Cami
İletişim:

postgres + zeos function problemi

Mesaj gönderen ahmet_sinav »

iyi çalışmalar arkadaşlar;
postgresql 8.2-zeos 6.5.1-delphi 2006-windows xp
pg'de yazdığım bir function'dan dönecek result'a göre bazı işlemler yaptırmam gerekli.

Kod: Tümünü seç

CREATE OR REPLACE FUNCTION "public"."fnc_kaydet" (a integer,b varchar, id integer ) RETURNS integer AS
$body$
begin
if b='' then
  return 2;
  exit;
end if;

if id=0 then
 insert into tbl_xx
 (xx_a,xx_b)
 VALUES
 (a,b);
else
 update tbl_xx set
 xx_a=a,
 xx_b=b
 where xx_id=id;
end if;
return 0;
end;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;
yazdığım function yukarıdaki gibi
zeosconnection nesnesinin isolation level'ını read commited yapıp query'e ilgili function'ı yazığım vakit
open,refresh yaptığımda
- db'ye herhangibir kayıt girişi olmuyor fakat db controller'de prior ve next ile ilgili kaydı görebiliyorum ve resultını alabiliyorum. bunun üzerine cached updates olayına baktım false , request live diye bir özelliği yok zaten
exec,refresh yapıtğımda
- db'ye kayıt işleniyor. db controllerde prior ve next ile ilgili kaydı görebiliyorum. fakat function'dan dönen result'ı alamıyorum zira execsql result döndürmüyor.
bunun üzerine önce exec sonra open yapayım dedim. open ile result geldi exec ile db'ye kayıt işlendi fakat db controllere baktığımda aynı kayıttan 2 tane olduğunu gördüm.
transaction'ın isolation level'ını none yaptığım vakit open ile result alıyorum db'ye kayıt yapıyorum fakat bu seferde

Kod: Tümünü seç

if b='' then
  return 2;
  exit;
end if;
satırlarını işletecek kodu gönderdiğim vakit access violation alıyorum. zira isolation level'ı none yapmakda işime gelmiyor.
Nasıl bir çözüm önerirsiniz, delphi ortamından gerekli kontroller yapılarak işlem gerçekleştirilebilir fakat bunun db üzerinden halletmem gerekiyor. postgres için bir konfigurasyon parametresi de gerekiyor olabilir onuda araştırıyorum ....
Cevaplar için şimdiden teşekkürler..
Saygılar;
Note : fonksiyonda herhangibir hata yok. problem zeos bileşenleri ile ilgili. Vcl formuna yazacaktım fakat burası daha uygun gibi geldi gerekirse taşınır..
İmam Süleyman Yakub <==> Molla Mustafa Mansur
Kullanıcı avatarı
ahmet_sinav
Üye
Mesajlar: 263
Kayıt: 17 Nis 2004 07:44
Konum: İzmir Yeşilyurt Ulu Cami
İletişim:

Mesaj gönderen ahmet_sinav »

pl/pgsql'de end satırına ulaşmadığı vakit uygulanan sql komutları commit edilmiyor

Kod: Tümünü seç

if b='' then
  return 2;
  exit;
end if; 
satırı için bir değişken tanımladım ve exit komutunu kaldırdım. bu değişkenin durumuna göre en alt satırda return belirledim.
İmam Süleyman Yakub <==> Molla Mustafa Mansur
Cevapla