| From: | Volkan YAZICI <yazicivo(at)ttnet(dot)net(dot)tr> |
|---|---|
| To: | Mustafa Yörükoğlu <Mustafa(at)Yorukoglu(dot)name(dot)tr> |
| Cc: | pgsql-tr-genel(at)PostgreSQL(dot)org |
| Subject: | Re: Fonksiyon içind |
| Date: | 2006-04-03 17:52:58 |
| Message-ID: | 20060403175258.GA215@alamut |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-tr-genel |
On Apr 03 08:25, Mustafa Yörükoğlu wrote:
> fonksiyon içindeki bütün sorgularımı execute ile çalıştırabileceğim
> yapıya soktum. Ancak bu sefer;
> execute sorgu into sonuc;
> satırlarında hatalar alıyorum.
Şöyle örnek bir kod parçası denediğimde aynı sorun ben de çıkmadı:
BEGIN;
CREATE FUNCTION test_f() RETURNS integer AS $$
DECLARE
sorgu text;
sonuc integer;
BEGIN
sorgu := 'CREATE TEMP TABLE temp_t (i integer);';
EXECUTE sorgu;
sorgu := 'INSERT INTO temp_t VALUES (random()*100);'
|| 'INSERT INTO temp_t VALUES (random()*100);'
|| 'INSERT INTO temp_t VALUES (random()*100);'
|| 'INSERT INTO temp_t VALUES (random()*100);'
|| 'INSERT INTO temp_t VALUES (random()*100);';
EXECUTE sorgu;
sorgu := 'SELECT i FROM temp_t ORDER BY i LIMIT 1;';
EXECUTE sorgu INTO sonuc;
RETURN sonuc;
END;
$$ LANGUAGE 'plpgsql' VOLATILE;
SELECT test_f();
ROLLBACK;
> Hatanın burada olduğunu EMS Postgresql
> Manager ile fonksiyonu debug ederek tespit edebildim.
EMS ne yapmış bilemem ama PostgreSQL 8.2 sürümü için Tom Lane güzel bir
yamada bulundu: Parser kaynaklı hatalarda, hataya sebep olan kod
kısmınının altına bir ^ işareti konarak, PostgreSQL, kodunuzu daha kolay
debug edebileceğiniz bir hata mesajı üretiyor. Ve aynı özellik,
PL/pgSQL prosedürlerinde (tamamen olmasa da) büyük oranda - parser
kaynaklı debug işlemi için - geçerli. Sunucunuza, CVS ağacından bu
sürümü kurup, prosedürlerinizi burada deneyebilirsiniz.
> Nedeni hakkında fikri olan var mı?
Bir fikrim yok, çünkü (eğer sorunuzu doğru anladıysam) kod bende
çalışıyor. Tam bir test-case gönderirseniz, daha sağlıklı cevap
verebiliriz.
İyi çalışmalar.
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Ahmet | 2006-04-07 08:53:46 | Trigger Procedure Hakkında |
| Previous Message | Mustafa Yörükoğlu | 2006-04-03 17:25:12 | Fonksiyon içinde "temporary table", "execute" into sorunu |