Ana içeriğe atla

PL/SQL

Oracle veritabanı, algoritmalar yazıp içerisinde SQL cümlelerini kullanabilmek için PL/SQL (Procedural Language extensions to SQL) dilini sunar.

Bu dil bize uygulama geliştirirken kullandığımız IF, CASE, WHILE gibi kontroller ile SUBSTR, LTRIM, ABS gibi fonksiyonları "Stored Procedure", "Function", "Trigger" gibi veritabanı nesnelerinde de kullanma olanağı sağlar.

PL/SQL'de ortak bir amaç için yazılmış olan "Stored Procedure" ve "Function" ları bir "Package" içerisinde toparlayabilir; sadece istediğiniz bir metodu açık(public) yapıp, ilgili uygulamanın bu metod ile erişime izin verir, diğerlerini saklayabilirsiniz.

PL/SQL'e ait birkaç özellik verecek olursak:

%TYPE
Bir sütundaki verinin tipini verir, değişken tanımlarken hata olasılığını azaltır."firmaadi" degiskeni, firmalar tablosunun firmaadi sütunun tipinde tanımlanabilir.

firmaadi firmalar.firmaadi%TYPE

"Cursor"
Bir veri bloğu çekilip,kayıtlar üzerinde satır satır işlem yapabilmemizi sağlar.

"Overloading"
Bir "Package" içerisinde aynı metod için farklı parametreler ile çağrım yapılabilmesi mümkündür.

PACKAGE BODY kontrol
IS
/* Tarih parametresi ile cagirabiliriz */
FUNCTION degerkontrol (tarih IN DATE) RETURN BOOLEAN
IS
BEGIN
RETURN tarih <= SYSDATE;
END;

/* Numara ile çağırabiliriz */
FUNCTION degerkontrol (numara IN NUMBER) RETURN BOOLEAN
IS
BEGIN
RETURN numara > 0;
END;
END;


İstisna (EXCEPTION)
İstisnaları yakalayabiliriz.


İyi bir PL/SQL için:

1. Mümkün olan en az kodu yazın
Hazır fonksiyonlar(INSTR,UPPER) ve paketleri(ROUND); önceden yazılmış ve test edilmiş kodları kullanın.
cURSOR'lerde FOR döngüsü kullanın.

2.Dinamik yapılar kullanın
Sütun veri tipi değişebilir; %TYPE ile bundan etkilenilmez
Yeni bir sütun eklenebilir; %ROWTYPE ile bundan etkilenilmez
Bir "Package" arayüzü ile veri yapılarına erişimi sınırlandırın.

3."Package" lar üzerinde yoğunlaşın
Tek başına bir SP yada Function yazmamaya çalışın. Böylece daha iyi veri arayüzleri oluşturacaksınız ve yeniden kullanılabilirliği arttırmış olacaksınız.

Notlar:
Package içinde yazılan SP ve Functionlar kullanım sırasına göre aşağıdan yukarı doğru yazılmalıdır. Kullanılacak olan SP bloğu, kullanacak(çağıracak) SP'den yukarıda yazılmalıdır.

Yorumlar