ORACLE – PL/SQL – FONKSIYONLAR
Merhabalar ,
Bu yazımda oracle da fonksyonlar nedir nasıl kullanılır bu konulara değineceğiz.
Fonksiyonlar Sql işlemlerimiz kolaylaştırmak için ve sürekli olarak yapılan işlemleri tekrar tekrar kod yazmamak için kullanılır .
Fonksiyonların Özellikleri :
- Bir PLSQL Bloğudur.
- Geriye bir değer dönmelidir.
- Veritabanında compile edilerek (derlenerek) saklanır.
- İçerisinde bir RETURN olmak zorundadır.
- Fonksiyonlar HER ZAMAN değer döndürmek zorundadır.
- Fonksiyon içerisinede INSERT,UPDATE ve DELETE işlemleri yapılmaz , SELECT ile kullanılır.
Örn :
-- CREATE OR REPLACE FUNCTION VergiUygula(deger IN NUMBER) RETURN NUMBER IS BEGIN RETURN (deger * 0.08); END; --
VergiUygula adında bir fonksiyon oluşturduk , deger adında bir number tipinde parametre almakta geriye number bir değer döndürmektedir.
şimdi bu fonksiyonumuzu kullanan bir örnek yapalım:
-- SELECT Employee_ID , Last_Name , Salary , VergiUygula(Salary) FROM Employees WHERE Department_ID = 100; --
OUT Parametresi Kullanımı :
bu parametre ile fonksiyona gönderilen parametre değişkenindeki değeri fonksiyon içerisinde kullanmıyor , fakat değişkene fonksiyon içerisinde farklı değerler atanır ise o değer fonksiyon dışında da etkileniyor.
Örnek üzerinden açıklayayım :
-- CREATE OR REPLACE FUNCTION out_func (outparm OUT VARCHAR2) RETURN VARCHAR2 IS BEGIN outparm := 'out param'; -- dışardan gelen değeri hiç kullanmadan yeni bir değere atatık RETURN 'return param'; END out_func; --
şimdi bu fonksiyonu kullanalım :
-- DECLARE retval VARCHAR2(20); outval VARCHAR2(20); BEGIN retval := out_func(outval); dbms_output.put_line(outval); dbms_output.put_line(retval); END; --
Çıktı :
fonksyon şu işlemi yaptı outval olarak gönderdiğimiz parametrenin değerini değiştirdi fakat return olarak return param gönderdi ve dönen değeri retval değişkenine yazdı.
görünürde outval değişkenine herhangi bir değer yazılmadı , ama fonksiyonda yapılan işlemde giriş değişkeni olarak gelen değişkenin değer ataması yapılıyor ve sonuç ekran görüntüsündeki gibi çıkıyor.
Bu yazımda anlatacaklarım bu kadar , umarım faydalı olmuştur , iyi çalışmalar 🙂 – Salih ŞEKER