Hurriyet

18 Şubat 2014 Salı

PL/SQL: Stored Functions - Fonksiyonlar

Stored Function dediğimiz nesneler aslında değer döndüren adlandırılmış PL/SQL fonksyionlarıdır. Fonksiyonlarla genelde bir değer hesaplanmaktadır.

Procedure ile Function  Arasındaki Farklar:
Procedure’lar PL/SQL ifadesi olarak çalıştırılırlar.
Function’lar bir ifadenin bir parçası olarak çalıştırılırlar.
Procedure’lar başlık kısımlarında bir return ifadesi taşımazlar.
Function’lar başluık kısımlarında mutlaka bir return ifadesi içermelidirler.
İstenirse output değerleri taşıyabilirler.
Sadece bir değer geri döndürebilirler.
İçerlerinde bir return ifadesi bulunsada bir değer döndürmek zorunda değildirler.
İçerisinde mutlaka return ifadesi bulunmalıdır.

Not:Procedure'larda bir out ifadesi bulunuyorsa bu procedure'ın fonksiyona çevrilerek yazılması Oracle tarafından tavsiye edilmektedir.

Fonksiyon Örneği:

 create or replace function deneme(x int)  
 return int as a int;  
 begin  
   
 a:=x+5;  
 return a;  
 end deneme;  
 /  

Bu fonksiyon örneğimizde tek değişken alan ve yine tek değişken döndüren bir program yazmış durumdayız.

declare   
 c int;  
 begin   
 c:=deneme(10);  
 dbms_output.put_line(c);  
 end;  

Bu fonksiyonumuzu sonra yukarıdaki gibi bir PL/SQL bloğu içerisinde çağırdığımızda, fonksiyonun geri döndürdüğü değeri bir değişkene atıp onu bastırırız. Sonuç olarak fonksiyonumuzun içerisine 10 sayısını gönderip, bu c değişkenine 15 değeri atanıp geri döndürülür.

PL/SQL'de Direkt Olarak Fonksiyonun Kullanılması:

 variable maas number;  
 execute :maas := deneme(100);  

Burada maas diye bir değişken tanımladıktan sonra deneme fonksiyonumuza bir değer gönderip bu fonksiyonumuzu çalıştırtabiliriz. Sonrasında çıkacak sonucu görmek için "Print maas" diyebiliriz.

Fonksiyonun Avantajları:

1-Fonksiyonlarla SQL ifadelerinin yapabileceği şeyler arttırılabilinir.
2-Data değerleri değiştirilebilinir.
3-Çok karışık işlemler halledilebilinir.

Fonksiyonun SQL İfadesinde Kullanılmasıyla İlgili Bir Örnek:

 CREATE OR REPLACE FUNCTION vergi(x NUMBER)  
  RETURN NUMBER IS  
 BEGIN  
   RETURN (x * 0.08);  
 END tax;  
 /  
 SELECT id,isim,maas, vergi(maas)  
 FROM  calisanlar  
 WHERE dep_no = 100; 

Burada calisanlar adlı tablomuzu sorgularken vergi hesaplaması yapmak için yukarıda yazdığımız fonksyionu kullanırız. Bu şekilde hem modülerliğimizi arttırmış oluruz, hem de kompleksliği azaltmış oluruz.

Fonksiyon Silmek İçin:

 drop function fonksiyon_ismi  



Hiç yorum yok:

Yorum Gönder