Re: [pgsql-tr-genel] Javadan Postgresql insert function içindeki smallint alana değer gönderemiyorum

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.
>
>

In response to

Browse pgsql-tr-genel by date

  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