PL/SQL Fonksiyonlar

Oracle PL/SQL komutlarını bir isim altında saklamak, işlem sonucunu döndürmek için kullanılan fonksiyonlar ve kullanımı ile ilgili bilgiler yer alıyor.

Fonksiyonlar

Oracle PL/SQL fonksiyon yapısı prosedür yapısında olduğu gibi komutları bir isim altında saklayarak ihtiyaç halinde tekrar çalıştırılmasını sağlayan yapılardır.

Fonksiyonların prosedürlerden farkı değer döndürmek zorunda olmasıdır.

Fonksiyon oluştururken kullanılacak anahtar kelimeler aşağıdaki gibidir.

CREATE [OR REPLACE] FUNCTION fonksiyon_adi
[(parameter_adi [IN | OUT | IN OUT] veri_tipi [, ...])]
RETURN donus_veri_tipi
{IS | AS}
BEGIN
    -- Komutlar
END [fonksiyon_adi];

Oracle PL/SQL ile fonksiyon oluşturma örneği aşağıdaki gibidir.

CREATE OR REPLACE function TOPLA (
    S1 IN PLS_INTEGER,
    S2 IN PLS_INTEGER
)
RETURN PLS_INTEGER
IS
BEGIN
    RETURN S1 + S2;
END;

Fonksiyon çağırma ve çalıştırma işlemi aşağıdaki gibi yapılır.

BEGIN
    DBMS_OUTPUT.put_line(TOPLA(10, 20));
END;

Oluşturulan fonksiyonlar hakkında bilgi almak için SYS.all_objects tablosu kullanılabilir.

SELECT * FROM SYS.all_objects WHERE OBJECT_TYPE = 'FUNCTION' AND OWNER = 'KULLANICI_ADI';

Fonksiyon silmek için aşağıdaki komut kullanılır.

DROP FUNCTION fonksiyon_adi;
DROP PROCEDURE TOPLA;

Fonksiyonların kullanım nedeni Oracle içerisinde yer alan fonksiyonların yetersiz kaldığı işemleri yapmak içindir.

Bir metindeki ilk harfi büyük yapan fonksiyon aşağıdaki gibi yazılabilir.

CREATE OR REPLACE function IHARFBUYUK (
    METIN IN VARCHAR2
)
RETURN VARCHAR2
IS
BEGIN
    RETURN UPPER(SUBSTR(METIN, 1, 1)) || LOWER(SUBSTR(METIN, 2));
END;

Fonksiyon aşağıdaki gibi kullanılabilir.

BEGIN
    DBMS_OUTPUT.put_line(IHARFBUYUK('MERHABA BU MESAJ NE OLACAK!'));
    DBMS_OUTPUT.put_line(IHARFBUYUK('merhaba bu mesaj ne olacak!'));
END;

Ayrıca yaş hesaplama, sürekli kullanılan bir işlemi hesaplama (KDV hesaplama gibi) için fonksiyonlar kullanılabilir.

PL/SQL Derslerine buradan ulaşabilirsiniz.

Hayırlı günler dilerim.

Yusuf SEZER

Yusuf SEZER

Computer Engineer who interested about web technologies, algorithms, artificial intelligence and embedded systems; constantly exploring new technologies.


Bunlara'da bakmalısın!