PL/SQL Prosedürler

Oracle PL/SQL komutlarını bir isim altında saklamak için kullanılan prosedür veya saklı yordam yapıları ve kullanımı ile ilgili bilgiler yer alıyor.

Prosedürler

Oracle PL/SQL komutlarını bir isim altında saklayarak ihtiyaç halinde tekrar çalıştırılmasını sağlayan yapılardır.

Prosedür oluştururken kullanılacak anahtar kelimeler aşağıdaki gibidir.

CREATE [OR REPLACE] PROCEDURE prosedur_adi
[(parameter_adi [IN | OUT | IN OUT] veri_tipi [, ...])]
{IS | AS}
BEGIN
    -- Komutlar
END prosedur_adi;

Komut içerisinde yer alan REPLACE anahtar kelimesi zorunlu değildir.

Ancak mevcut bir prosedür tekrar oluşturulmaya çalışıldığında hata vereceğinden kullanılması faydalı olacaktır.

Örneğin; PL/SQL nedir yazımda yer alan Merhaba Oracle! örneğini prosedür ile oluşturalım.

SET SERVEROUTPUT ON;
CREATE OR REPLACE PROCEDURE MERHABA
AS
BEGIN
   DBMS_OUTPUT.put_line('Merhaba Oracle!');
END;

Prosedür oluşturulduktan sonra çağırma ve çalıştırma işlemi aşağıdaki gibi yapılır.

EXECUTE MERHABA;
EXEC MERHABA;

Prosedür her çalıştırıldığında prosedür içerisinde yer alan komutlar icra edilecektir.

Paramatereler

Prosedür yapısının bir diğer önemli özelliği ise parametre almaya imkan vermesidir.

IN

Parametre IN ile işaretlenmişse parametre sadece prosedüre geçirilir.

OUT

Parametre OUT ile işaretlenmişse parametre dışarıya veri gönderir.

IN OUT

Parametre IN OUT ile işaretlenmişse hem IN hem de OUT özelliğini alır.

Aşağıdaki örnekte döngü başlangıç ve bitiş değerleri parametre olarak alınmıştır.

SET SERVEROUTPUT ON;
CREATE OR REPLACE PROCEDURE DONGU (
    BASLANGIC IN PLS_INTEGER,
    BITIS IN PLS_INTEGER
) AS
BEGIN
    FOR v_sayi IN BASLANGIC .. BITIS LOOP
        DBMS_OUTPUT.put_line('Komut ' ||v_sayi || '. defa çalıştırıldı.');
    END LOOP;
END;

Prosedür kullanımı aşağıdaki gibidir.

EXECUTE DONGU(45, 50);

Oluşturulan prosedürler hakkında bilgi almak için SYS.all_procedures tablosu kullanılabilir.

SELECT * FROM SYS.all_procedures WHERE OWNER = 'KULLANICI_ADI';

Oluşturulan prosedürü silmek için aşağıdaki komut kullanılır.

DROP PROCEDURE prosedur_adi;
DROP PROCEDURE DONGU;

Prosedürlerin kullanım nedeni yazılan komutların güvenli bir şekilde veritabanı yönetim sisteminde saklanmasını sağlamaktır.

Ayrıca oluşturulan prosedürler önceden derlendiği için daha performanslı çalışacaktır.

Herhangi bir programlama dili ile bir tablodan veri alındığında ilk olarak SQL cümlesinin yazılması ve veritabanına gönderilmesi gerekir.

Gönderilen SQL cümlesi veritabanı yönetim sistemi tarafından kontrol edildikten sonra çalıştırılır.

Ancak prosedürler önceden derlendiğinden kontrole ihtiyaç duymadan çalıştırılır ve böylece performans elde edilir.

Prosedürler fonksiyon yapılarıyla benzerlik göstermesi karışıklığa neden olmaktadır.

Prosedürlerin değer döndürmesi zorunlu değilken fonksiyonlar değer döndürmek zorundadır.

Prosedürler genellikle CRUD olarak adlandırılan ekleme, listeleme, güncelleme ve silme işlemlerinde kullanılır.

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!