| From: | AZiZ CiZMECi <azizcizmeci(at)gmail(dot)com> |
|---|---|
| To: | Samed YILDIRIM <samed(at)reddoc(dot)net> |
| Cc: | "pgsql-tr-genel(at)postgresql(dot)org" <pgsql-tr-genel(at)postgresql(dot)org> |
| Subject: | Re: [pgsql-tr-genel] Javadan Postgresql insert function içindeki smallint alana değer gönderemiyorum |
| Date: | 2016-12-14 17:38:03 |
| Message-ID: | CAA3Z3mJtfzQNzeQ=L2Wg=PE8b+0X8UVEzKnDouuxeFnSE+aQGQ@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-tr-genel |
Merhaba Samet bey, ilginize çok teşekkür ederim, anlattığınız 2 nolu
yöntemle sorun çözüldü. Fonksiyonu integer tanımladım ve değeri smallint'e
cast ederek gönderdim.
Aynı sorunu yaşayan arkadaşlar olursa , çözümü ve kodları paylaşayım
istedim.
Tablo yapım;
CREATE TABLE test_tbl
>
> (
>
> id serial ,
>
> adsoy character varying(20),
>
> yas smallint
>
> );
>
>
sp_test function;
CREATE OR REPLACE FUNCTION public.sp_test(_adsoyad character varying, _yas
>>> integer)
>>
>> RETURNS integer AS
>>
>> $$
>>
>> insert into test_tbl (adsoyad,yas) values ($1,$2::smallint)
>>
>> RETURNING id;
>>
>> $$
>>
>> LANGUAGE sql VOLATILE
>>
>>
>>
Tekrar teşekkür ederim, iyi çalışmalar
13 Aralık 2016 21:31 tarihinde Samed YILDIRIM <samed(at)reddoc(dot)net> yazdı:
> Merhabalar Aziz Bey,
>
> Siz select sp_test('ali verli',14); şeklinde sorgu gönderdiğinizde aslında
> sp_test(character varying, integer) şeklinde bir fonksiyon arıyor. Yani siz
> 14 yazdığınızda bu smallint değil integer olduğu için postgres buna uygun
> bir fonksiyon arıyor, olmadığı için de bulamadım diye hata dönüyor. Bunu
> birkaç şekilde çözebilirsiniz.
>
> 1. Fonksiyonu çağırırken gönderdiğiniz değeri smallint'e cast ederek
> gönderirsiniz.
> select sp_test('ali veli',14::smallint);
>
> 2. Fonksiyonu int ile oluşturursunuz ama smallint'e cast ederek insert
> yaparsınız.
> CREATE OR REPLACE FUNCTION public.sp_test(_adsoyad character varying,_yas
> int)
> RETURNS integer AS
> $$
> insert into test_tbl (adsoyad,yas) values ($1,$2::smallint)
> RETURNING id;
> $$
> LANGUAGE sql VOLATILE
>
> 3. Bir ara fonksiyon yazarsınız, bu fonksiyon int kabul eder ve sizin ana
> fonksiyonunuzu çağırır.
> CREATE OR REPLACE FUNCTION public.sp_test(_adsoyad character varying,_yas
> int)
> RETURNS integer AS
> $$
> select sp_test($1,$2::smallint);
> $$
> LANGUAGE sql VOLATILE
>
> 4. Tablonuzdaki bu alanı integer'a dönüştürür, fonksiyonu da integer ile
> oluşturursunuz.
>
> İyi çalışmalar.
>
>
> İyi çalışmalar.
> Samed YILDIRIM
>
>
>
> 13.12.2016, 19:55, "AZiZ CiZMECi" <azizcizmeci(at)gmail(dot)com>:
>
> Merhaba.
>
> Pgadmin kullanarak aşağıdaki gibi bir function tanımladım;
>
> CREATE OR REPLACE FUNCTION public.sp_test(_adsoyad character varying,_yas
> smallint)
>
> RETURNS integer AS
>
> $$
>
> insert into test_tbl (adsoyad,yas) values ($1,$2)
>
> RETURNING id;
>
> $$
>
> LANGUAGE sql VOLATILE
>
>
>
>
>
> Bu functionu, pgadmin üzerinde select sp_test('ali veli',14) şeklinde
> çalıştırdığımda
>
> "No function matches the given name and argument types. You might need to
> add explicit type casts."
>
> hatası aldım. Hatayı araştırdıktan sonra, her ne kadar mantıklı gelmese
> de, select sp_test('ali veli','14') şeklinde integer değerin de string
> tipinde gönderilmesi gerektiğini gördüm ve sorun çözüldü. (Sorunun
> çözümünün bu olup olmadığına emin değilim)
>
> Fakat bu functionu java tarafında aşağıdaki gibi
>
> CallableStatement sp_test = vt.prepareCall("{call sp_test(?,?)}");
>
> sp_test.setString(1,"ali veli");
>
> sp_testads6.setInt(2,14);
>
>
>
> kullandığımda yine
> "ERROR: function sp_testads6(character varying, integer) does not exist
> İpucu: No function matches the given name and argument types. You might
> need to add explicit type casts."
>
> hatası aldım. int değeri Stringe çevirip göndermeye çalıştım yine olmadı.
>
> Bu hata konusunda yardımcı olursanız memnun olurum. Bir de, postgresql
> function tanımlamaları konusunda püf noktalarını kısaca anlatabilirmisiniz?
> İyi çalışmalar.
>
>
| From | Date | Subject | |
|---|---|---|---|
| Next Message | metin guler | 2016-12-16 09:48:45 | Postgresql now() fonksiyonu ile ilgili sorun |
| Previous Message | Samed YILDIRIM | 2016-12-13 18:31:20 | Re: [pgsql-tr-genel] Javadan Postgresql insert function içindeki smallint alana değer gönderemiyorum |