| From: | "N(dot) Can KIRIK" <can(at)epati(dot)com(dot)tr> |
|---|---|
| To: | AZiZ CiZMECi <azizcizmeci(at)gmail(dot)com> |
| 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-11 23:37:22 |
| Message-ID: | CAJ1wP5mmQfZOBnT73qWFmtiN+tAvYBWU18FKLyV55NK9jpM5jA@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-tr-genel |
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-12 15:48:35 | Re: [pgsql-tr-genel] Function içinde join kullanımı |
| Previous Message | AZiZ CiZMECi | 2016-12-11 09:27:47 | Function içinde join kullanımı |