| From: | AZiZ CiZMECi <azizcizmeci(at)gmail(dot)com> |
|---|---|
| To: | "N(dot) Can KIRIK" <can(at)epati(dot)com(dot)tr> |
| Cc: | pgsql-tr-genel <pgsql-tr-genel(at)postgresql(dot)org> |
| Subject: | Re: [pgsql-tr-genel] Function içinde join kullanımı |
| Date: | 2016-12-12 15:48:35 |
| Message-ID: | CAA3Z3m+b9HVT5cTcE=mo7Rf7+xQS=mSv_ADoH3MBX8yuU6-8dg@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-tr-genel |
Can bey, öncelikle cevabınız için teşekkür ederim. İlk mesajımda, normalde
join kullanarak sorunu çözdüğümü belirtmediğim için lütfen kusuruma
bakmayın, size zahmet verdim. Yeni kullanmaya başladığım ve okuduğum
kısıtlı kaynağa rağmen gözümde bir anda kutsal database konumuna yükselen
postgresql'in, "join kullanarak bunu herkes yapıyor" "ama ben bu sorun için
x yöntemini geliştirdim" diyebileceğini düşünüp bu konuda kendine has bir
çözümü olduğunu umarak soruyu direkt sordum.
Cevabınız için tekrar teşekkür ederim.
İyi Çalışmalar.
12 Aralık 2016 02:37 tarihinde N. Can KIRIK <can(at)epati(dot)com(dot)tr> yazdı:
> merhaba,
>
> keşke aldığınız yazım hatasını da paylaşsaydınız, biraz daha net cevap
> verebilirdim. biraz fikir yürüterek yardımcı olmaya çalışayım;
>
> sql dilinde yazılmış fonksiyonda birden fazla sorgu çalıştırılabiliyor,
> ancak bunlar sadece bağımsız çalışabiliyorlar, yani birbirlerine referans
> verilemiyor.
> gerçekten böyle bir ihtiyaç var ise CTE (WITH)
> <https://www.postgresql.org/docs/current/static/queries-with.html>
> kullanmak gerekiyor. ama örneğinizden anladığım kadarıyla buna da ihtiyaç
> yok.
>
> fonksiyonu şu şekilde yazmanız yeterli olur;
>
> *CREATE* *OR* *REPLACE* *FUNCTION* "sp_login"*(*
>>
>> *IN* "tcno" *VARCHAR*
>>
>> *,**IN* "psw" *VARCHAR*
>>
>> *,**OUT* "uno" INT2
>>
>> *,**OUT* "adsoyad" *VARCHAR*
>>
>> *,**OUT* "unvan" *VARCHAR*
>>
>> *,**OUT* "kurumid" INT2
>>
>> *,**OUT* "kurum_adi" *VARCHAR*
>>
>> *)* *RETURNS* SETOF *RECORD* *AS* $$
>>
>>
>>
>> *SELECT*
>>
>> u*.*"u_id"
>>
>> *,*u*.*"u_adsoyad"
>>
>> *,*u*.*"u_unvan"
>>
>> *,*u*.*"u_kurumid"
>>
>> *,*k*.*"kurum_adi"
>>
>> *FROM*
>>
>> "user_tbl" u
>>
>> *JOIN* "kurum_tbl" k *ON* k*.*"kurum_kod" *=* u*.*"u_kurumid"
>>
>> *WHERE*
>>
>> *(* u*.*"u_tc"*,* u*.*"u_psw" *)* *=* *(* $1*,* $2 *)*
>>
>> *;*
>>
>>
>>
>> $$ *LANGUAGE* *sql* STABLE*;*
>>
>
>
> iyi çalışmalar.
>
>
>
> *N. Can KIRIKePati Bilişim Teknolojilerihttp://www.epati.com.tr/
> <http://www.epati.com.tr/>*
>
> 2016-12-11 12:27 GMT+03:00 AZiZ CiZMECi <azizcizmeci(at)gmail(dot)com>:
>
>> Merhaba.
>>
>> Function/Stored procedure içinde, önce bir tabloda sorgu yapılması ve
>> daha sonra bu sorgudan dönen bir alanın değerine göre ikinci bir sorgu daha
>> yapılması gerekiyor.
>> Şöyle bir function oluşturdum;
>>
>> CREATE OR REPLACE FUNCTION sp_login(
>>>
>>> IN tcno character varying,
>>>
>>> IN psw character varying,
>>>
>>> OUT uno smallint,
>>>
>>> OUT adsoyad character varying,
>>>
>>> OUT unvan character varying,
>>>
>>> OUT kurumid smallint)
>>>
>>> RETURNS SETOF record AS
>>>
>>> $$
>>>
>>> select u_id,u_adsoyad,u_unvan,u_kurumid from user_tbl where u_tc=$1 and
>>>> u_psw=$2;
>>>
>>> $$
>>>
>>> LANGUAGE sql STABLE
>>>
>>>
>>
>>> Yukarıdaki function ile kullanıcı adı ve şifre kontrolü yapıp, sonuc
>>>> true ise OUT parametresi ile tanımladığım alanları alıyorum, fakat dönen
>>>> OUT alanların içindeki kurumid değeri tabloda smallint tanımlı ve bana bu
>>>> kurumid değerinin kurumlar tablosundaki character varying tanımlıdeğeri
>>>> gerektiğinden ikinci bir sorgu daha yapmam gerekiyor.
>>>
>>> İstediğim sonucu almak için aşağıdaki kodu yazdım fakat fonksiyonda iki
>> select cümlesini syntax hatasını aşıp bir araya getiremedim.
>>
>>>
>>>
>>> select kurum_adi from kurum_tbl where kurum_kod=( select kurumid from
>> sp_login('$1','$2'))
>>
>>
>>> Yardımcı olursanız memnun olurum, iyi günler diliyorum
>>>
>>>
>>>>
>>
>
| From | Date | Subject | |
|---|---|---|---|
| Next Message | AZiZ CiZMECi | 2016-12-13 17:54:30 | Javadan Postgresql insert function içindeki smallint alana değer gönderemiyorum |
| Previous Message | N. Can KIRIK | 2016-12-11 23:37:22 | Re: [pgsql-tr-genel] Function içinde join kullanımı |