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