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