14 Ocak 2014 Salı

Oracle fonksiyondan Tablo döndürme



Bir fonksiyondan tablo döndürmek için, önce döndürülecek tablonun imza tipi (Sütun adları ve tipleri) ve ilgili tipin tablo nesnesi tanımlanmalıdır.





create type alibudak.type_x is object(

    ODEME_TIP_KODU NUMBER,

    ACIKLAMA VARCHAR2(50)

);



create TYPE alibudak.table_x IS TABLE OF type_x;





Bu tipler tanımlandıktan sonra fonksiyon PIPELINED keyword’ü ile tanımlanır. Ben örneği Package’da yaptım.





CREATE OR REPLACE PACKAGE body ALIBUDAK.pkg_test AS



function odeme_tipleri_getir

return alibudak.table_x pipelined

is



    kayitlar alibudak.table_x;



begin





    for satir in ( 

                    select

                        payment_type,

                        description

                        from ankara.t001hasodt

                    where company_Code=2

                 )

    loop

   

        pipe row (type_x(satir.payment_type, satir.description));

   

    end loop;







end;



end;

/





Tanımlamalar  tamamlandıktan sonra fonksiyon SQL bloğu içerisinde TABLE olarak çağrılır ve işlem tamamlanmış olur. Çağrılan fonksiyon, tıpkı tablo gibi davranır. Örneğin dönen sütunlara direkt olarak koşul (WHERE) eklenebilir.





select

    *

from table(alibudak.pkg_test.odeme_tipleri_getir()) t

where t.odeme_tip_kodu in(1,3,11)

Hiç yorum yok:

Yorum Gönder