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