İnternette dolaşırken PL/SQL üzerine kaliteli birçok makale gördüm.Ama bunların belli bir sıra ile takip etmemesi ve çıktılarının olmaması okunabilirliği azaltan faktörler olarak görüyorum.Bundan yola çıkarak PL/SQL yapısını anlatan ve bolca örneklerini göreceğimiz bir yazı dizisi hazırlamak istedim.
PL/SQL nedir,neden kullanılır ?
PL/SQL yapısal dillere ait özelliklerin SQL’e eklenmesiyle ortaya çıkan Oracle’a has bir dildir.İstemci-sunucu ortamları tasarlama ile ağ üzerindeki dağıtık işlemler yapma ve transactionlar çalıştırma imkanı sunmaktadır.PL/SQL kullanarak her türlü SQL cümleciğini yazabilirsiniz.Dinamik SQL ifadeleri oluşturup,çalıştırabilirsiniz.PL/SQL programları genellikle veritabanında saklanırlar.Bu nedenle sorguların istemciden veritabanına gönderilmesi ve tekrar istemciye gönderilmesine gerek yoktur.Böylecilikle ağ trafiğini de azaltmış olur.
PL/SQL Yapısal Özellikler
PL/SQL, SQL cümlelerine blok yapılarının,şart cümlelerinin,dögülerin v.b diğer özelliklerin eklenmesiyle oluşmuş bir dildir.En temel yapı birimi bloktur.Bir veya birden fazla bloktan oluşabilirler.Akış kontrolü sayesinde yapısal dillere ait olan şart cümleleri ve döngüler PL/SQL bloklarında kullanılabilir.Böylece yazılan programlar çok etkin ve hızlı hale gelmektedir.Eğer bu özellik olmasaydı SQL cümlelerini ayrı ayrı yazmak ve çalıştırmak gerekecekti.Bu da performansı arttıran etkenlerden birtanesidir.
Blok Yapısı
Birbirleriyle ilişkili ifadelerin mantıksal bölümlere ayrılması demektir.Değişken tanımlamaları ve hata kontrolleride her blok içerisinde yapılabilir.PL/SQL blok yapısı 3 bölümden oluşur
1-Bildirim Deyimleri
2-Program Komutları
3-Aykırı durumlar
Bu üç bölümden sadece ikincisi zorunludur. Klasik bir PL/SQL blok yapısı şu şekildedir.
[ Declare
–bildirim deyimleri(tanımlamalar)
BEGIN
–program komutları
[EXCEPTION–aykırı durumlar
END;
Şimdide bu ifadede geçen komutları kısaca tanıyalım
- Declare ; Blok içerisinde kullanılan değişkenlerin tanımlandığı bölümdür.
- Begin ; Bloğun başlangıcını belirten rezerve isimdir
- Exception ;Aykırı durumların başlangıcını belirten rezerve isimdir.Hata durumlarında neler yapılacağını belirtir.
- End ; Bloğun sonunu belirten rezerve isimdir
Örnek bir blok yapısı şu şekildedir.
DECLARE
personel_no NUMBER (3) := 400;
personel_adi VARCHAR2 (20);
BEGIN
SELECT first_name
INTO personel_adi
FROM hr.employees
WHERE employee_id = personel_no;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line (‘Böyle bir personelimiz bulunmamaktadir’);
END;
Başka bir örnek olarak personelimizin maaşlarına %40 zam yapan bir PL/SQL blogu yazalım
DECLARE
zam_miktari NUMBER := 0.4;
BEGIN
UPDATE hr.employees
SET salary = salary * (1 + zam_miktari)
WHERE employee_id = 104;
– calistirmadan once 6000 olan personelimizin maasi calistirdiktan sonra 8400 olmustur
END;
Bu makalemizde genel PL/SQL mantığını anlatmaya çalıştım.Bir sonraki makalede Procedure ve Fonksiyon’ları irdelemek için tekrar buluşmak üzere.