Temmuz 23, 2010

Oracle Fonksiyon ile Tablo Döndürmek

Oracle MSSQL Server a göre kod yazımı bakımından daha zordur.Buna oracle da fonksiyon ile tablo değeri döndürmeyi örnek gösterebiliriz.MS SQL Server da tablo değerini almak için sadece tablo değerini döndüren fonksiyonu yazmak yeterli iken oracle da durum biraz daha karışıktır.
Oracle da tablo dönderen bir fonksiyon yazmak için ilk olarak bir nesne(object) oluşturuyoruz. Bu nesne bizim tablomuzdaki döndürmek istediğimiz alanların bulunduğu bir nesne olmalı.

Create or Replace Type satirlar as OBJECT( id NUMBER(2),ad VARCHAR2(20), soyad VARCHAR2(25));

Nesnemizi tanımladıktan sonra elemanları bu nesneden oluşan bir tablo tanımlamamız gerekiyor.

Create Or Replace Type tablomuz AS TABLE OF satirlar; 

Bunu da oluşturduktan sonra artık fonksiyonumuzu yazabiliriz.

Create Or Replace Function  fonksiyonumuz (v_id in NUMBER)
RETURN tablomuz
IS
donendeger   tablomuz := NEW tablomuz();
BEGIN
FOR satir IN (SELECT id,adi,soyadi FROM tabloadı WHERE id = v_id)
LOOP
donendeger.EXTEND;
donendeger(donendeger.COUNT) := new satirlar( satir.id, satir.adi, satir.soyadi);
END LOOP;
RETURN donendeger;
END;
Fonksiyonumuzu Select * from table(fonksiyonumuz(5)) şeklinde çağırabiliriz.

Hiç yorum yok:

Yorum Gönder

System.Text.Json.JsonException hatası - cycle or if the object depth is larger than the maximum allowed depth of 32.

 Eğer .net'te aşağıdaki hatayı alıyorsanız; " A possible object cycle was detected which is not supported. This can either be due t...