PL/SQL açılımı Procedural Language/Structured Query Languge'dir.Yani Prosedür Dili/ Yapılandırılmış Sorgulama Dili.PL/SQL yapısal dillere ait özelliklerin SQL’e eklenmesiyle ortaya çıkan Oracle’a has bir dildir.PL/SQL Oracle firmasının piyasaya sürdüğü her üründe önemli bir yere sahiptir. Kullanıcılar PL/SQL’i kullanarak programlarına bir çok yeni özellikler katmaktadırlar. Bunlar arasında;
- PL/SQL tabanlı kaydedilmiş yordamlar(stored procedures) ve veritabanı tetiklemeleri(triggers) ile önemli iş kurallarını programlamak
- Oracle Developer ürünleri ile güçlü ve kolay kullanılabilir görsel ortamlarla programları detaylandırmak ve daha rahat kontrol etmek
- Oracle tabanlı uygulamalarda nesne-tabanlı(object-oriented) tasarımlar yapma Web sayfalarından Oracle veritabanlarına link yapma
- PL/SQL’in belki de en önemli özelliği istemci-sunucu ortamları tasarlama ile ağ üzerinde dağıtık işlemler yapma ve bir çok sorguyu çalıştırma imkanı sunmasıdır.
- Constant(Sabitler),
- Variable(Değişkenler),
- Exception(İstisnalar),
- Procedure(Prosedürler),
- Function(Fonksiyonlar),
- Package(Paketler),
- Record(Kayıtlar),
- PL/SQL Table,
- Cursor(İmleçler),
- Reserved Word(Reserve Edilmiş Kelimelerdir BEGIN, END gibi)
BEGIN
DBMS_OUTPUT.PUT_LINE('Merhaba PL/SQL!');
END;
/
Ekran Çıktısı:
Merhaba PL/SQL!
PL/SQL procedure successfully completed.
Eğer sizin bilgisayarınız bu çıktı görünmüyorsa SQL kodun başına
SET SERVEROUTPUT ON; kodunu ekleyin.Bu sunucunun dışaraya yazı çıkartmasını sağlar.
1.Blok Yapısı
PL/SQL programı blok yapılarına bölünür.Her blok PL/SQL ve SQL deyimlerini içerir.Tipik bir PL/SQL bloğu aşağıdaki yapıya sahiptir.
[DECLARE declaration_statements ] BEGIN executable_statements [EXCEPTION exception_handling_statements ] END; |
I)Tanımlama ve istisna blokları isteğe bağlıdır.
II)declaration_statements sonradan geri kalanı blok kullanılan değişkenler bildirir.
III)Bu değişkenler, o blok için yerel.
IV)Bildirimleri her zaman blok başında yerleştirilir.
V)executable_statements blok için gerçek çalıştırılabilir ifadeler.
VI)executable_statements döngüler, koşullu mantığı, vb gibi görevleri gerçekleştirmek için ifadeler içerebilir.
VII)exception_handling_statements herhangi bir hata yakalama ifadelerdir.
VIIIHer deyim, bir noktalı virgül ile sonlandırılır (;).
IX)Bir blok END anahtar kelime kullanarak sonlandırılır.
II)declaration_statements sonradan geri kalanı blok kullanılan değişkenler bildirir.
III)Bu değişkenler, o blok için yerel.
IV)Bildirimleri her zaman blok başında yerleştirilir.
V)executable_statements blok için gerçek çalıştırılabilir ifadeler.
VI)executable_statements döngüler, koşullu mantığı, vb gibi görevleri gerçekleştirmek için ifadeler içerebilir.
VII)exception_handling_statements herhangi bir hata yakalama ifadelerdir.
VIIIHer deyim, bir noktalı virgül ile sonlandırılır (;).
IX)Bir blok END anahtar kelime kullanarak sonlandırılır.
Örnekbir blok yapısı şu şekildedir:
DECLARE
genislik INTEGER;
yukseklik INTEGER :=2;
alan INTEGER;
BEGIN
alan := 6;
genislik := alan / yukseklik;
DBMS_OUTPUT.PUT_LINE('Genişlik = ' || genislik );
EXCEPTION
WHEN ZERO_DIVIDE THEN
DBMS_OUTPUT.PUT_LINE('Sıfıra Bölme Hatası');
END;
/
Output:
Genislik = 3
PL/SQL procedure successfully completed.
- BAŞLICA PL/SQL VERİ TİPLERİ:
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.
Veri Tipleri ile İlgili Başlıca Özellikler:
- PL/SQL de değer atama := sembolleriyle yapılır
- Değişken tanımlanması şu şekilde yapılmaktadır;
<değişken ismi> veri tipi [NOT NULL ] [:= <ilk değer>]
DECLARE
sistem_tarihi DATE := sysdate;
BEGIN
DBMS_OUTPUT.PUT_LINE(sistem_tarihi);
END;
/
Output:
05/11/2011
PL/SQL procedure successfully completed.
- Sabitlerin tanımlanması ise adı üzerinde sabit bir değer verilir ve sonradan değiştirilemez.Değişkenlerden farkı bununla birlikte ilk değer atamasının hemen yapılmasıdır
<sabit_ismi> veri tipi CONSTANT [NOT NULL] [:=<ilk değer>]
Pi_sayisi CONSTANT NUMBER := 3.14; gibi
- Pl/Sql’de veritabanı ile iletişimde olan tipler tanımlamaktan bahsedersek %TYPE ve %ROWTYPE niteleyicilerini kullanabilirsiniz.Örneğin aşağıdaki cümlede çalışanlar tablosundaki çalışan adı bilgisini tutan kolon tipinde bir veri tipi tanımlayabiliriz.Örneğin;
calisan_ismi employees.FIRST_NAME%TYPE
declare
v_ename employee.first_Name%TYPE;
v_emp_rec employee%ROWTYPE;
begin
v_ename := 'MURAT';
v_emp_rec.first_Name := 'ALİ';
end;
/
- Eğer bir değişkene değer atanmazsa oracle bu değişkenin değerini null olarak görür.
SET ECHO ON
SET SERVEROUTPUT ON
DECLARE
test INTEGER;
BEGIN
IF test IS NULL THEN
DBMS_OUTPUT.PUT_LINE(' TEST değişkeni null''dur ');
END IF;
test := 1;
DBMS_OUTPUT.PUT_LINE('TEST = ' || TO_CHAR(test));
IF test IS NOT NULL THEN
DBMS_OUTPUT.PUT_LINE('TEST değişkeni null değildir.');
END IF;
END;
/
OUTPUT:
TEST degiskeni null'dur
TEST = 1
TEST degiskeni null degildir.
PL/SQL procedure successfully completed.
Kaynakça:
- Learning Oracle PL/SQL ,Bill Pribyl&Steven Feuerstein
- Oracle PL/SQL Programming Steven Feuerstein with Bill Pribly
- http://www.ceturk.com/oracle-veritabanina-kusbakisi/
- http://www.ceturk.com/plsql-blok-yapilariveri-tipleri/
- http://www.java2s.com/Tutorial/Oracle/0420__PL-SQL-Data-Types/BlockStructure.htm
- http://datawarehouse.gen.tr/Makale.aspx?ID=443&seo=plsql-yazi-dizisi2
Hiç yorum yok:
Yorum Gönder