Bu makalemizde gelin beraber PL/SQL'de kullanılan farklı blok yapılarını ve veri tiplerini inceleyelim. PL/SQL'de bloklar denildiğinde akla birbiri ile ilişkisel olarak bağlı program parçacıklarının bir arada tutulduğu,birleştirildiği yapılar akla gelir. Ayrıca bu bloklar içiçe de kullanılabilirler. Bu blokları üç ayrı türe ayırabiliriz. Bunlar;
• Normal Blok
• Fonksiyon Bloğu
• Prosedürel Blok
Şimdi bu blokları ayrıntılı olarak inceleyelim.
• NORMAL BLOK:
Bu tip bloklarda birbiriyle ilişkili cümlecik ve tanımlamalar yer alır. Blok yapısı aşağıdaki gibidir.
DECLARE
tanımlamalar
BEGIN
komutlar
EXCEPTION
hata durumları
END;
Declare kısmında blok içinde kullanılacak değişken tanımlamaları yapılır. Begin blok başlangıcını belirtir. End ise blok bitişini işaret eder ve noktalı virgül işaretiyle biter.Komutlar Begin-End bloğu içine yazılırlar. Ayrıca isteğe bağlı olarak Exception kısmında çıkabilecek bir hata durumunda neler yapılması gerektiğini belirten komutlar yazılabilir. Şimdi bu blok türüne ait bir örneği aşağıda belirtiyorum.
DECLARE
FIYAT_ARTIS_ORANI:=0.2;
BEGIN
UPDATE SEBZE SET FIYAT=FIYAT*(1+FIYAT_ARTIS_ORANI);
COMMIT;
END;
Yukardaki blok sebze fiyatlarında %20 bir artış yapan PL/SQL bloğudur.
• FONKSİYON BLOĞU:
Fonksiyon blokları bir geri değer döndüren alt programlardır ve aşağıdaki kalıba göre oluşturulur.
FUNCTION Fonksiyonİsmi
Tanımlamalar
BEGIN
Komutlar
EXCEPTION
Hata Durumları
END Fonksiyonİsmi;
Function ifadesinden sonra fonksiyona vereceğimiz ismi yazarız.Ardından gerekli değişken tanımlamalarımızı da yazarız. Sonraki kısım normal blokta olduğu gibi begin-end arasına yazılan komutlardan oluşur.Şimdi konuyu daha iyi anlamak için bir örnek yapalım.
FUNCTION MAAS_BUL(PERSONEL_NO INTEGER) RETURN NUMBER IS MAASI NUMBER;
BEGIN
SELECT MAAS INTO MAASI FROM PERSONEL WHERE PERSONELNO=PERSONEL_NO;
RETURN MAASI;
END MAAS_BUL;
Yukardaki yaptığımız örnekte fonksiyon bloğumuzun adını
MAAS_BUL olarak belirledik.Ardından parantez içinde PERSONEL_NO isimli
integer veri tipinde bir fonksiyon girdi parametresi belirttik.Fonksiyonun geri dönüş tipini de number olarak yazdık.
Ayrıca MAASI adında bir değişken tanımladık.Sonra geldik begin-end arasında gerekli kodlarımızı yazmaya.Fonksiyon çalıştırıldığında girilen personel numarası personel tablosunda kayıtlı personel numaralarından biriyse ilgili kaydın maaş bilgisini al ve MAASI isimli değişkene aktar dedik select cümleciğiyle.Son olarakta return komutu ile bulunan bu maaş bilgisini geri döndürmesini istedik. END kısmını da mutlaka fonksiyonun adını yazarak bitirmeyi unutmadık.
• PROSEDÜREL BLOK:
Bu tarz bloklar sonuç olarak birden çok değer döndüren alt programlar olarak çalışırlar. Yapısı aşağıdaki gibidir.
PROCEDURE Prosedür_İsmi
Tanımlamalar
BEGIN
Komutlar
EXCEPTION
Hata Durumları
END Prosedür_İsmi;
Umuyorum ki bu yapı ile ilgili hemen bir örnek yaparsak konu daha iyi anlaşılacaktır.
PROCEDURE AD_SOYAD_BUL(PERSONEL_NO IN INTEGER,AD OUT CHAR,
SOYAD OUT CHAR) IS MAAS NUMBER(10);
BEGIN
SELECT ADI,SOYADI,MAASI INTO AD,SOYAD,MAAS FROM PERSONEL
WHERE PERSONELNO=PERSONEL_NO;
END AD_SOYAD_BUL;
Şimdi bu kod bloğunu açıklamaya çalışalım. Öncelikle işe prosedür bloğumuza isim vererek başladık. Ardından parantez içinde fonksiyonun parametrelerini tanımladık.Sonra begin-end kısmında sql cümleciğimi yazdık.Bu PL/SQL kodları ile yapılmak istenen aranılan bir personelin numarasına göre bulunması ve bulunan kişinin ad,soyad ve maaş bilgilerinin kullanıcıya geri döndürülmesidir.
Sıra geldi PL/SQL'de kullanılan veri tiplerine değinmeye.
• PL/SQL VERİ TİPLERİ:
NUMBER: 38 basamağa kadar destek sunan nümerik veri tipidir.
BINARY_INTEGER: Nümerik bir yapıya sahiptir.Number veri tipinden farkı veritabanında daha az yer kaplamasıdır.
CHAR: Karakter veri tipidir.
VARCHAR2: Karakter veri tipidir.Değişken uzunlukta karakterleri tutabilir. Maksimum uzunluğu 32767 bytedır.
LONG: Varchar2 veri tipi gibidir. Fakat karakter tutma sınırı 2GB'a kadar yükselir.
LONG RAW: Long tipinde binary olarak veri tutan veri tipidir.
BOOLEAN: True-False tipi değerleri depolar.
DATE: Tarih ve saat unsurlarını tutabilen veri tipidir.
TIMESTAMP: Date gibi tarih saat değerlerini tutar. Ayrıntılı olarak yüzyıldan saniyeye kadar olan bütün bilgileri tutar.
Evet kısaca PL/SQL'deki blok yapılarını ve veri tiplerini inceledik. Umuyorum ki yararlı olmuştur. Bir sonraki makalemizde görüşmek dileğiyle.
YAZAR: Görkem SEZGİN
3 Haziran 2010 Perşembe
Kaydol:
Kayıtlar (Atom)
Hakkımda
- Görkem Sezgin
- İstanbul, Türkiye
- I was born in Istanbul on August 1981.I have the process of little more about education :-) Firstly,I studied Dumlupınar University Vocational School of Computer Information Systems and then I did vertical transmission into European University of Lefke in TRNC. My department is Computer Engineering. I graduated on 2007.(In additional,I studied Economy at Anadolu University (2006). In 2007,I started Master of Computer Engineering at Beykent University. I graduated Computer Engineering (MSc) in 2009.I have worked at privacy companies as Software Engineering.I did my military service.I have worked in Verisoft Corporated Company.