Re: record dönüşlü bildirilmiş işlevde return deyimin tipi uyumsuz

Lists: Postg윈 토토SQL :
From: Java Notlarım <javanotlarim(at)gmail(dot)com>
To: pgsql-tr-genel(at)postgresql(dot)org
Subject: record dönüşlü bildirilmiş işlevde return deyimin tipi uyumsuz
Date: 2018-11-27 16:55:56
Message-ID: CAG=rH2UBrWXBZcvvH5X6FHXLuj5-TH40bk+HA0EMbXnzK-VB+A@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-tr-genel

Merhaba.
Tablomda smallint array tipinde bir alanım mevcut. Bu alandaki verileri
çekerken, smallint değerleri yerine, bu smallint değerlerin string
karşılıkları ile çekmek için, JOIN kullanarak bir sorgu yazdım. Bu sorgu
normalde sorunsuz çalışırken, sorguyu function (Stored Procedure) olarak
yazmaya çalıştığımda

*"ERROR: HATA: record dönüşlü bildirilmiş işlevde return deyimin tipi
uyumsuz AYRINTI: Son ifade 3 sütununda text[] yerine text döndürüyor."*
şeklinde bir hata alıyorum. Aldığım hata ile ilgili çözüm öneriniz olursa
çok memnun olurum.
Functionum aşağıdaki gibi

CREATE OR REPLACE FUNCTION sp_list_abc(
>
> IN sp_master_id integer,
>
> OUT sp_id bigint,
>
> OUT sp_evrakno text,
>
> OUT sp_yer_adi_array text[])
>
> RETURNS SETOF record
>
> LANGUAGE 'sql'
>
>

> COST 100
>
> VOLATILE
>
>
>
> AS $BODY$
>
>
>> select ed.id, ed.evrak_no,STRING_AGG(syer.yer_adi, ', ')
>
> from tbl_detay ed
>
> LEFT JOIN tbl_std_yer syer on syer.id=ANY(ed.yer_id_array)
>
> where ed.master_id=$1
>
> GROUP BY ed.id, syer.yer_adi
>
>
>> $BODY$;
>
>


From: "N(dot) Can KIRIK" <n(dot)can(dot)kirik(at)gmail(dot)com>
To: javanotlarim(at)gmail(dot)com
Cc: pgsql-tr-genel <pgsql-tr-genel(at)postgresql(dot)org>
Subject: Re: record dönüşlü bildirilmiş işlevde return deyimin tipi uyumsuz
Date: 2018-11-27 16:58:47
Message-ID: CAJ1wP5m=1Aaaw_0OvTP6nGurwGSjECbR7uYdD0X5pd8EQuNqxg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: Postg윈 토토SQL :

merhaba

STRING_AGG metin dönüyor bunun yerine ARRAY_AGG kullanabilirsiniz.

*N. Can KIRIK*

On Tue, Nov 27, 2018 at 7:56 PM Java Notlarım <javanotlarim(at)gmail(dot)com>
wrote:

> Merhaba.
> Tablomda smallint array tipinde bir alanım mevcut. Bu alandaki verileri
> çekerken, smallint değerleri yerine, bu smallint değerlerin string
> karşılıkları ile çekmek için, JOIN kullanarak bir sorgu yazdım. Bu sorgu
> normalde sorunsuz çalışırken, sorguyu function (Stored Procedure) olarak
> yazmaya çalıştığımda
>
> *"ERROR: HATA: record dönüşlü bildirilmiş işlevde return deyimin tipi
> uyumsuz AYRINTI: Son ifade 3 sütununda text[] yerine text döndürüyor."*
> şeklinde bir hata alıyorum. Aldığım hata ile ilgili çözüm öneriniz olursa
> çok memnun olurum.
> Functionum aşağıdaki gibi
>
> CREATE OR REPLACE FUNCTION sp_list_abc(
>>
>> IN sp_master_id integer,
>>
>> OUT sp_id bigint,
>>
>> OUT sp_evrakno text,
>>
>> OUT sp_yer_adi_array text[])
>>
>> RETURNS SETOF record
>>
>> LANGUAGE 'sql'
>>
>>
>
>> COST 100
>>
>> VOLATILE
>>
>>
>>
>> AS $BODY$
>>
>>
>>> select ed.id, ed.evrak_no,STRING_AGG(syer.yer_adi, ', ')
>>
>> from tbl_detay ed
>>
>> LEFT JOIN tbl_std_yer syer on syer.id=ANY(ed.yer_id_array)
>>
>> where ed.master_id=$1
>>
>> GROUP BY ed.id, syer.yer_adi
>>
>>
>>> $BODY$;
>>
>>


From: Samed YILDIRIM <samed(at)reddoc(dot)net>
To: Java Notlarım <javanotlarim(at)gmail(dot)com>, "pgsql-tr-genel(at)postgresql(dot)org" <pgsql-tr-genel(at)postgresql(dot)org>
Subject: Re: record dönüşlü bildirilmiş işlevde return deyimin tipi uyumsuz
Date: 2018-11-27 17:11:16
Message-ID: 7236591543338676@sas1-fb8a605c4548.qloud-c.yandex.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-tr-genel

<div xmlns="http://www.w3.org/1999/xhtml">Merhabalar,</div><div xmlns="http://www.w3.org/1999/xhtml"> </div><div xmlns="http://www.w3.org/1999/xhtml">Tabloların (tbl_detay ve tbl_std_yer) kolon yapılarını (create cümlecikleri de olur), birkaç satırlık örnek veri ve kullandığınız PostgreSQL versiyonunu da ekler misiniz.</div><div xmlns="http://www.w3.org/1999/xhtml"> </div><div xmlns="http://www.w3.org/1999/xhtml">İyi çalışmalar.</div><div xmlns="http://www.w3.org/1999/xhtml">Samed YILDIRIM</div><div xmlns="http://www.w3.org/1999/xhtml"> </div><div xmlns="http://www.w3.org/1999/xhtml"> </div><div xmlns="http://www.w3.org/1999/xhtml"> </div><div xmlns="http://www.w3.org/1999/xhtml">27.11.2018, 19:56, "Java Notlarım" &lt;javanotlarim(at)gmail(dot)com&gt;:</div><blockquote xmlns="http://www.w3.org/1999/xhtml" type="cite"><div>Merhaba. <div>Tablomda smallint array tipinde bir alanım mevcut. Bu alandaki verileri çekerken, smallint değerleri yerine, bu smallint değerlerin string karşılıkları ile çekmek için, JOIN kullanarak bir sorgu yazdım. Bu sorgu normalde sorunsuz çalışırken, sorguyu function (Stored Procedure) olarak yazmaya çalıştığımda </div><div> </div><div><strong>"ERROR: HATA: record dönüşlü bildirilmiş işlevde return deyimin tipi uyumsuz AYRINTI: Son ifade 3 sütununda text[] yerine text döndürüyor."</strong></div><div>şeklinde bir hata alıyorum. Aldığım hata ile ilgili çözüm öneriniz olursa çok memnun olurum.</div><div>Functionum aşağıdaki gibi</div><div> </div><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;"><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">CREATE OR REPLACE FUNCTION sp_list_abc(</blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">IN sp_master_id integer,</blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">OUT sp_id bigint,</blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">OUT sp_evrakno text,<span style="white-space:pre;"> </span></blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">OUT sp_yer_adi_array text[])</blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">    RETURNS SETOF record </blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">    LANGUAGE 'sql'</blockquote></blockquote><div> </div><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;"><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">    COST 100</blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">    VOLATILE </blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">   </blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">AS $BODY$</blockquote> <blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">select <a rel="noopener noreferrer" href="http://ed.id/">ed.id</a>, ed.evrak_no,STRING_AGG(syer.yer_adi, ', ') </blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">from tbl_detay ed</blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">LEFT JOIN tbl_std_yer syer on <a rel="noopener noreferrer" href="http://syer.id/">syer.id</a>=ANY(ed.yer_id_array)</blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">where ed.master_id=$1 </blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">GROUP BY <a rel="noopener noreferrer" href="http://ed.id/">ed.id</a>, syer.yer_adi</blockquote> <blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">$BODY$;</blockquote></blockquote></div></blockquote>

Attachment Content-Type Size
unknown_filename text/html 4.3 KB

From: Java Notlarım <javanotlarim(at)gmail(dot)com>
To: pgsql-tr-genel(at)postgresql(dot)org
Subject: Fwd: record dönüşlü bildirilmiş işlevde return deyimin tipi uyumsuz
Date: 2018-11-27 18:04:25
Message-ID: CAG=rH2WOfA8QuqPFRv79pOsdw2o_oKO_mCdNW9iu91dk0UgUbw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: Postg스포츠 토토 사이트SQL

---------- Forwarded message ---------
From: Java Notlarım <javanotlarim(at)gmail(dot)com>
Date: 27 Kas 2018 Sal, 20:02
Subject: Re: record dönüşlü bildirilmiş işlevde return deyimin tipi uyumsuz
To: <samed(at)reddoc(dot)net>

Merhaba, öncelikle ilginiz ve yardımınız için çok teşekkür ederim.
Can Bey; ARRAY_AGG kullandığımda "array_agg(text, unknown) fonksiyonu
mevcut değildir" uyarısı aldım.

Samed bey; Postgresql 10 versiyonunu kullanıyorum. Tablolarım ve örnek
verileri excel tablosundan kopyalayıp yapıştırdım, umarım mail içeriğinde
sorun olmaz.

tbl_detay
İd – bigint master_id – integer evrak_no – text yer_id_array - smallint []
1 12 12ilerd {3,2,4}
2 1 abcd78 {2,5}
3 1 yyy5 {1.2}

tbl_std_yer
İd – integer yer_adi - text
1 Denizli
2 İzmir
3 İstanbul
4 Ankara
Function sonucu istenilen
İd – bigint master_id – integer evrak_no – text yer_adlari
1 12 12ilerd {İstanbul,İzmir,Denizli}
2 1 abcd78 {İzmir,Bursa}
3 1 yyy5 {Denizli.İzmir}

Samed YILDIRIM <samed(at)reddoc(dot)net>, 27 Kas 2018 Sal, 19:11 tarihinde şunu
yazdı:

> Merhabalar,
>
> Tabloların (tbl_detay ve tbl_std_yer) kolon yapılarını (create
> cümlecikleri de olur), birkaç satırlık örnek veri ve kullandığınız
> PostgreSQL versiyonunu da ekler misiniz.
>
> İyi çalışmalar.
> Samed YILDIRIM
>
>
>
> 27.11.2018, 19:56, "Java Notlarım" <javanotlarim(at)gmail(dot)com>:
>
> Merhaba.
> Tablomda smallint array tipinde bir alanım mevcut. Bu alandaki verileri
> çekerken, smallint değerleri yerine, bu smallint değerlerin string
> karşılıkları ile çekmek için, JOIN kullanarak bir sorgu yazdım. Bu sorgu
> normalde sorunsuz çalışırken, sorguyu function (Stored Procedure) olarak
> yazmaya çalıştığımda
>
> *"ERROR: HATA: record dönüşlü bildirilmiş işlevde return deyimin tipi
> uyumsuz AYRINTI: Son ifade 3 sütununda text[] yerine text döndürüyor."*
> şeklinde bir hata alıyorum. Aldığım hata ile ilgili çözüm öneriniz olursa
> çok memnun olurum.
> Functionum aşağıdaki gibi
>
>
> CREATE OR REPLACE FUNCTION sp_list_abc(
>
> IN sp_master_id integer,
>
> OUT sp_id bigint,
>
> OUT sp_evrakno text,
>
> OUT sp_yer_adi_array text[])
>
> RETURNS SETOF record
>
> LANGUAGE 'sql'
>
>
>
> COST 100
>
> VOLATILE
>
>
>
> AS $BODY$
>
>
>
> select ed.id, ed.evrak_no,STRING_AGG(syer.yer_adi, ', ')
>
> from tbl_detay ed
>
> LEFT JOIN tbl_std_yer syer on syer.id=ANY(ed.yer_id_array)
>
> where ed.master_id=$1
>
> GROUP BY ed.id, syer.yer_adi
>
>
>
> $BODY$;
>
>


From: Samed YILDIRIM <samed(at)reddoc(dot)net>
To: Java Notlarım <javanotlarim(at)gmail(dot)com>
Cc: pgsql-tr-genel <pgsql-tr-genel(at)postgresql(dot)org>
Subject: Re: record dönüşlü bildirilmiş işlevde return deyimin tipi uyumsuz
Date: 2018-11-27 18:29:24
Message-ID: 8304741543343364@myt6-67cd1de25d8a.qloud-c.yandex.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-tr-genel

<div xmlns="http://www.w3.org/1999/xhtml">Selamlar,</div><div xmlns="http://www.w3.org/1999/xhtml"> </div><div xmlns="http://www.w3.org/1999/xhtml">İstediğiniz çıktıyı verecek olan SQL sorgusu aşağıdaki şekilde;</div><div xmlns="http://www.w3.org/1999/xhtml"> </div><blockquote xmlns="http://www.w3.org/1999/xhtml"><div>select ed.id, ed.master_id, ed.evrak_no, array_agg(syer.yer_adi) from tbl_detay ed left join tbl_std_yer syer on syer.id=any(ed.yer_id_array) group by ed.id, ed.master_id, ed.evrak_no;</div></blockquote><div xmlns="http://www.w3.org/1999/xhtml"> </div><div xmlns="http://www.w3.org/1999/xhtml">Bu çıktıyı daha önce iletmiş olduğunuz fonksiyon örneği içerisine yerleştirir isek;</div><div xmlns="http://www.w3.org/1999/xhtml"> </div><blockquote xmlns="http://www.w3.org/1999/xhtml"><div>create or replace function sp_list_abc(in sp_mastter_id integer, out sp_id bigint, out sp_evrakno text, out sp_yer_adi_array text[])</div><div>returns setof record language sql as</div><div>$body$</div><div>select ed.id, ed.evrak_no, array_agg(syer.yer_adi) from tbl_detay ed left join tbl_std_yer syer on syer.id=any(ed.yer_id_array) where ed.master_id=$1 group by ed.id, ed.master_id, ed.evrak_no;</div><div>$body$;</div></blockquote><div xmlns="http://www.w3.org/1999/xhtml"> </div><div xmlns="http://www.w3.org/1999/xhtml">Kullanım örneği de aşağıdaki gibi;</div><div xmlns="http://www.w3.org/1999/xhtml"> </div><blockquote xmlns="http://www.w3.org/1999/xhtml"><div>postgres=# select * from sp_list_abc(1);<br /> sp_id | sp_evrakno | sp_yer_adi_array<br />-------+------------+------------------<br />     3 | yyy5       | {Denizli,İzmir}<br />     2 | abcd78     | {İzmir}<br />(2 rows)<br /><br />postgres=# select * from sp_list_abc(12);<br /> sp_id | sp_evrakno |    sp_yer_adi_array     <br />-------+------------+-------------------------<br />     1 | 12ilerd    | {İzmir,İstanbul,Ankara}<br />(1 row)<br /> </div></blockquote><div xmlns="http://www.w3.org/1999/xhtml"> </div><div xmlns="http://www.w3.org/1999/xhtml">İyi çalışmalar.</div><div xmlns="http://www.w3.org/1999/xhtml">Samed YILDIRIM</div><div xmlns="http://www.w3.org/1999/xhtml"> </div><div xmlns="http://www.w3.org/1999/xhtml"> </div><div xmlns="http://www.w3.org/1999/xhtml"> </div><div xmlns="http://www.w3.org/1999/xhtml">27.11.2018, 21:03, "Java Notlarım" &lt;javanotlarim(at)gmail(dot)com&gt;:</div><blockquote xmlns="http://www.w3.org/1999/xhtml" type="cite"><div><p style="margin-bottom:0.5cm;line-height:100%;background:transparent;"><span style="font-variant-east-asian:normal;font-variant-numeric:normal;"><font color="#222222"><font face="Arial, Helvetica, sans-serif"><font style="font-size:12pt;">Merhaba, öncelikle ilginiz ve yardımınız için çok teşekkür ederim.  </font></font></font></span><br /><span style="font-variant-east-asian:normal;font-variant-numeric:normal;"><font color="#222222"><font face="Arial, Helvetica, sans-serif"><font style="font-size:12pt;">Can Bey; ARRAY_AGG kullandığımda "array_agg(text, unknown) fonksiyonu mevcut değildir" uyarısı aldım.</font></font></font></span><br /><br /><span style="font-variant-east-asian:normal;font-variant-numeric:normal;"><font color="#222222"><font face="Arial, Helvetica, sans-serif"><font style="font-size:12pt;">Samed bey; Postgresql 10 versiyonunu kullanıyorum. Tablolarım ve örnek verileri excel tablosundan kopyalayıp yapıştırdım, umarım mail içeriğinde sorun olmaz.</font></font></font></span></p><p style="margin-bottom:0.5cm;line-height:100%;background:transparent;"> </p><table style="font-family:&quot;Liberation Sans&quot;;font-size:x-small;" cellspacing="0" border="0"><tbody><tr><td colspan="4" style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center" valign="middle" height="17">tbl_detay</td></tr><tr><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center" height="17">İd – bigint</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">master_id – integer</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">evrak_no – text</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">yer_id_array - smallint []</td></tr><tr><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center" height="17">1</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">12</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">12ilerd</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">{3,2,4}</td></tr><tr><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center" height="17">2</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">1</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">abcd78</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">{2,5}</td></tr><tr><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center" height="17">3</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">1</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">yyy5</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">{1.2}</td></tr></tbody></table> <div> </div><div><table style="font-family:&quot;Liberation Sans&quot;;font-size:x-small;" cellspacing="0" border="0"><tbody><tr><td colspan="2" style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center" valign="middle" height="17">tbl_std_yer</td></tr><tr><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center" height="17">İd – integer</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">yer_adi - text</td></tr><tr><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center" height="17">1</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">Denizli</td></tr><tr><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center" height="17">2</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">İzmir</td></tr><tr><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center" height="17">3</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">İstanbul</td></tr><tr><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center" height="17">4</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">Ankara</td></tr></tbody></table></div><div><table style="font-family:&quot;Liberation Sans&quot;;font-size:x-small;" cellspacing="0" border="0"><tbody><tr><td colspan="4" style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center" valign="middle" height="17">Function sonucu istenilen</td></tr><tr><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center" height="17">İd – bigint</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">master_id – integer</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">evrak_no – text</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">yer_adlari</td></tr><tr><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center" height="17">1</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">12</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">12ilerd</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">{İstanbul,İzmir,Denizli}</td></tr><tr><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center" height="17">2</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">1</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">abcd78</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">{İzmir,Bursa}</td></tr><tr><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center" height="17">3</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">1</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">yyy5</td><td style="border-width:1px;border-style:solid;border-color:rgb(0,0,0);font-family:&quot;Liberation Sans&quot;;" align="center">{Denizli.İzmir}</td></tr></tbody></table></div></div> <div><div>Samed YILDIRIM &lt;<a rel="noopener noreferrer" href="mailto:samed(at)reddoc(dot)net">samed(at)reddoc(dot)net</a>&gt;, 27 Kas 2018 Sal, 19:11 tarihinde şunu yazdı:</div><blockquote style="margin:0 0 0 0.8ex;border-left:1px #ccc solid;padding-left:1ex;"><div>Merhabalar,</div><div> </div><div>Tabloların (tbl_detay ve tbl_std_yer) kolon yapılarını (create cümlecikleri de olur), birkaç satırlık örnek veri ve kullandığınız PostgreSQL versiyonunu da ekler misiniz.</div><div> </div><div>İyi çalışmalar.</div><div>Samed YILDIRIM</div><div> </div><div> </div><div> </div><div>27.11.2018, 19:56, "Java Notlarım" &lt;<a target="_blank" rel="noopener noreferrer" href="mailto:javanotlarim(at)gmail(dot)com">javanotlarim(at)gmail(dot)com</a>&gt;:</div><blockquote type="cite"><div>Merhaba. <div>Tablomda smallint array tipinde bir alanım mevcut. Bu alandaki verileri çekerken, smallint değerleri yerine, bu smallint değerlerin string karşılıkları ile çekmek için, JOIN kullanarak bir sorgu yazdım. Bu sorgu normalde sorunsuz çalışırken, sorguyu function (Stored Procedure) olarak yazmaya çalıştığımda </div><div> </div><div><strong>"ERROR: HATA: record dönüşlü bildirilmiş işlevde return deyimin tipi uyumsuz AYRINTI: Son ifade 3 sütununda text[] yerine text döndürüyor."</strong></div><div>şeklinde bir hata alıyorum. Aldığım hata ile ilgili çözüm öneriniz olursa çok memnun olurum.</div><div>Functionum aşağıdaki gibi</div><div> </div><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;"><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">CREATE OR REPLACE FUNCTION sp_list_abc(</blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">IN sp_master_id integer,</blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">OUT sp_id bigint,</blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">OUT sp_evrakno text,<span style="white-space:pre-wrap;"> </span></blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">OUT sp_yer_adi_array text[])</blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">    RETURNS SETOF record </blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">    LANGUAGE 'sql'</blockquote></blockquote><div> </div><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;"><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">    COST 100</blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">    VOLATILE </blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">   </blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">AS $BODY$</blockquote> <blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">select <a target="_blank" rel="noopener noreferrer" href="http://ed.id/">ed.id</a>, ed.evrak_no,STRING_AGG(syer.yer_adi, ', ') </blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">from tbl_detay ed</blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">LEFT JOIN tbl_std_yer syer on <a target="_blank" rel="noopener noreferrer" href="http://syer.id/">syer.id</a>=ANY(ed.yer_id_array)</blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">where ed.master_id=$1 </blockquote><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">GROUP BY <a target="_blank" rel="noopener noreferrer" href="http://ed.id/">ed.id</a>, syer.yer_adi</blockquote> <blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex;">$BODY$;</blockquote></blockquote></div></blockquote></blockquote></div></blockquote>

Attachment Content-Type Size
unknown_filename text/html 14.9 KB

From: "N(dot) Can KIRIK" <n(dot)can(dot)kirik(at)gmail(dot)com>
To: javanotlarim(at)gmail(dot)com
Cc: pgsql-tr-genel <pgsql-tr-genel(at)postgresql(dot)org>
Subject: Re: record dönüşlü bildirilmiş işlevde return deyimin tipi uyumsuz
Date: 2018-11-27 18:32:05
Message-ID: CAJ1wP5m5Aqy590qPCFjedvZ1=y65cMKPzfUiwWNY1UJEmTbTjQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-tr-genel

merhabalar,

array_agg metin dönen string_agg'den farklı olarak doğrudan dizi döndüğü
için ikinci parametre almıyor. ikinci parametreyi yani ',' ifadesini
kaldırırsanız sorun yaşamazsınız.

iyi çalışmalar.

*N. Can KIRIK*

On Tue, Nov 27, 2018 at 9:04 PM Java Notlarım <javanotlarim(at)gmail(dot)com>
wrote:

>
>
> ---------- Forwarded message ---------
> From: Java Notlarım <javanotlarim(at)gmail(dot)com>
> Date: 27 Kas 2018 Sal, 20:02
> Subject: Re: record dönüşlü bildirilmiş işlevde return deyimin tipi uyumsuz
> To: <samed(at)reddoc(dot)net>
>
>
> Merhaba, öncelikle ilginiz ve yardımınız için çok teşekkür ederim.
> Can Bey; ARRAY_AGG kullandığımda "array_agg(text, unknown) fonksiyonu
> mevcut değildir" uyarısı aldım.
>
> Samed bey; Postgresql 10 versiyonunu kullanıyorum. Tablolarım ve örnek
> verileri excel tablosundan kopyalayıp yapıştırdım, umarım mail içeriğinde
> sorun olmaz.
>
> tbl_detay
> İd – bigint master_id – integer evrak_no – text yer_id_array - smallint []
> 1 12 12ilerd {3,2,4}
> 2 1 abcd78 {2,5}
> 3 1 yyy5 {1.2}
>
> tbl_std_yer
> İd – integer yer_adi - text
> 1 Denizli
> 2 İzmir
> 3 İstanbul
> 4 Ankara
> Function sonucu istenilen
> İd – bigint master_id – integer evrak_no – text yer_adlari
> 1 12 12ilerd {İstanbul,İzmir,Denizli}
> 2 1 abcd78 {İzmir,Bursa}
> 3 1 yyy5 {Denizli.İzmir}
>
> Samed YILDIRIM <samed(at)reddoc(dot)net>, 27 Kas 2018 Sal, 19:11 tarihinde şunu
> yazdı:
>
>> Merhabalar,
>>
>> Tabloların (tbl_detay ve tbl_std_yer) kolon yapılarını (create
>> cümlecikleri de olur), birkaç satırlık örnek veri ve kullandığınız
>> PostgreSQL versiyonunu da ekler misiniz.
>>
>> İyi çalışmalar.
>> Samed YILDIRIM
>>
>>
>>
>> 27.11.2018, 19:56, "Java Notlarım" <javanotlarim(at)gmail(dot)com>:
>>
>> Merhaba.
>> Tablomda smallint array tipinde bir alanım mevcut. Bu alandaki verileri
>> çekerken, smallint değerleri yerine, bu smallint değerlerin string
>> karşılıkları ile çekmek için, JOIN kullanarak bir sorgu yazdım. Bu sorgu
>> normalde sorunsuz çalışırken, sorguyu function (Stored Procedure) olarak
>> yazmaya çalıştığımda
>>
>> *"ERROR: HATA: record dönüşlü bildirilmiş işlevde return deyimin tipi
>> uyumsuz AYRINTI: Son ifade 3 sütununda text[] yerine text döndürüyor."*
>> şeklinde bir hata alıyorum. Aldığım hata ile ilgili çözüm öneriniz olursa
>> çok memnun olurum.
>> Functionum aşağıdaki gibi
>>
>>
>> CREATE OR REPLACE FUNCTION sp_list_abc(
>>
>> IN sp_master_id integer,
>>
>> OUT sp_id bigint,
>>
>> OUT sp_evrakno text,
>>
>> OUT sp_yer_adi_array text[])
>>
>> RETURNS SETOF record
>>
>> LANGUAGE 'sql'
>>
>>
>>
>> COST 100
>>
>> VOLATILE
>>
>>
>>
>> AS $BODY$
>>
>>
>>
>> select ed.id, ed.evrak_no,STRING_AGG(syer.yer_adi, ', ')
>>
>> from tbl_detay ed
>>
>> LEFT JOIN tbl_std_yer syer on syer.id=ANY(ed.yer_id_array)
>>
>> where ed.master_id=$1
>>
>> GROUP BY ed.id, syer.yer_adi
>>
>>
>>
>> $BODY$;
>>
>>


From: Java Notlarım <javanotlarim(at)gmail(dot)com>
To: pgsql-tr-genel(at)postgresql(dot)org
Subject: Re: record dönüşlü bildirilmiş işlevde return deyimin tipi uyumsuz
Date: 2018-11-27 19:09:45
Message-ID: CAG=rH2WnZL=bGp+EGeoounnyH5p99fun9QbT7tWZUSpoHeF7PQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-tr-genel

Değerli zamanınızdan ayırıp cevap verdiğiniz için çok teşekkür ederim Samed
bey ve Can bey.
Detaylı cevabınızı kendime uyarladım ve sorun çözüldü Samed bey.
İyi çalışmalar diliyorum

N. Can KIRIK <n(dot)can(dot)kirik(at)gmail(dot)com>, 27 Kas 2018 Sal, 20:32 tarihinde şunu
yazdı:

> merhabalar,
>
> array_agg metin dönen string_agg'den farklı olarak doğrudan dizi döndüğü
> için ikinci parametre almıyor. ikinci parametreyi yani ',' ifadesini
> kaldırırsanız sorun yaşamazsınız.
>
> iyi çalışmalar.
>
> *N. Can KIRIK*
>
>
> On Tue, Nov 27, 2018 at 9:04 PM Java Notlarım <javanotlarim(at)gmail(dot)com>
> wrote:
>
>>
>>
>> ---------- Forwarded message ---------
>> From: Java Notlarım <javanotlarim(at)gmail(dot)com>
>> Date: 27 Kas 2018 Sal, 20:02
>> Subject: Re: record dönüşlü bildirilmiş işlevde return deyimin tipi
>> uyumsuz
>> To: <samed(at)reddoc(dot)net>
>>
>>
>> Merhaba, öncelikle ilginiz ve yardımınız için çok teşekkür ederim.
>> Can Bey; ARRAY_AGG kullandığımda "array_agg(text, unknown) fonksiyonu
>> mevcut değildir" uyarısı aldım.
>>
>> Samed bey; Postgresql 10 versiyonunu kullanıyorum. Tablolarım ve örnek
>> verileri excel tablosundan kopyalayıp yapıştırdım, umarım mail içeriğinde
>> sorun olmaz.
>>
>> tbl_detay
>> İd – bigint master_id – integer evrak_no – text yer_id_array - smallint
>> []
>> 1 12 12ilerd {3,2,4}
>> 2 1 abcd78 {2,5}
>> 3 1 yyy5 {1.2}
>>
>> tbl_std_yer
>> İd – integer yer_adi - text
>> 1 Denizli
>> 2 İzmir
>> 3 İstanbul
>> 4 Ankara
>> Function sonucu istenilen
>> İd – bigint master_id – integer evrak_no – text yer_adlari
>> 1 12 12ilerd {İstanbul,İzmir,Denizli}
>> 2 1 abcd78 {İzmir,Bursa}
>> 3 1 yyy5 {Denizli.İzmir}
>>
>> Samed YILDIRIM <samed(at)reddoc(dot)net>, 27 Kas 2018 Sal, 19:11 tarihinde şunu
>> yazdı:
>>
>>> Merhabalar,
>>>
>>> Tabloların (tbl_detay ve tbl_std_yer) kolon yapılarını (create
>>> cümlecikleri de olur), birkaç satırlık örnek veri ve kullandığınız
>>> PostgreSQL versiyonunu da ekler misiniz.
>>>
>>> İyi çalışmalar.
>>> Samed YILDIRIM
>>>
>>>
>>>
>>> 27.11.2018, 19:56, "Java Notlarım" <javanotlarim(at)gmail(dot)com>:
>>>
>>> Merhaba.
>>> Tablomda smallint array tipinde bir alanım mevcut. Bu alandaki verileri
>>> çekerken, smallint değerleri yerine, bu smallint değerlerin string
>>> karşılıkları ile çekmek için, JOIN kullanarak bir sorgu yazdım. Bu sorgu
>>> normalde sorunsuz çalışırken, sorguyu function (Stored Procedure) olarak
>>> yazmaya çalıştığımda
>>>
>>> *"ERROR: HATA: record dönüşlü bildirilmiş işlevde return deyimin tipi
>>> uyumsuz AYRINTI: Son ifade 3 sütununda text[] yerine text döndürüyor."*
>>> şeklinde bir hata alıyorum. Aldığım hata ile ilgili çözüm öneriniz
>>> olursa çok memnun olurum.
>>> Functionum aşağıdaki gibi
>>>
>>>
>>> CREATE OR REPLACE FUNCTION sp_list_abc(
>>>
>>> IN sp_master_id integer,
>>>
>>> OUT sp_id bigint,
>>>
>>> OUT sp_evrakno text,
>>>
>>> OUT sp_yer_adi_array text[])
>>>
>>> RETURNS SETOF record
>>>
>>> LANGUAGE 'sql'
>>>
>>>
>>>
>>> COST 100
>>>
>>> VOLATILE
>>>
>>>
>>>
>>> AS $BODY$
>>>
>>>
>>>
>>> select ed.id, ed.evrak_no,STRING_AGG(syer.yer_adi, ', ')
>>>
>>> from tbl_detay ed
>>>
>>> LEFT JOIN tbl_std_yer syer on syer.id=ANY(ed.yer_id_array)
>>>
>>> where ed.master_id=$1
>>>
>>> GROUP BY ed.id, syer.yer_adi
>>>
>>>
>>>
>>> $BODY$;
>>>
>>>