Re: [pgsql-tr-genel] Function içinde join kullanımı

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

In response to

Responses

Browse pgsql-tr-genel by date

  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ı