Açılımı Procedural Language extensions to the Structured Query Language olan SQLPL Türkçe'de “Yapılandırılmış Sorgu Diline Yönelik Prosedürel Dil Uzantıları anlamını taşıyor. SQLPL, SQL'e yapısal dillerin özelliklerinin eklenmesiyle meydana getirilen bir programlama dilidir.
- Oracle veri tabanın yer alan SQLPL, SQL ve Java ile birlikte üç ana programlama dilinden bir tanesidir.
- SQL, RDBMS'te veri sorgulamak ve güncellemek adına oldukça popüler bir dildir fakat kısıtlıdır. SQLPL de tam bu noktada devreye giriyor. SQL kısıtlamalarının önüne geçmek için SQL dilinde bulunan pek çok prosedüre yapı ekleyen SQLPL, Oracle'ın veri tabanında kritik iş uygulamaları ve iş mantığı oluşturmak için daha kapsayıcı bir programlama dili sunar.
- Son derece yapılandırılmış, kocaman bir yapıya büründürülmüş, okunabilir bir dil olan SQLPL'i öğrenmesi de oldukça kolaydır.
SQLPL Nerelerde Kullanılır?
- Oracle veri tabanı gelişimi için standart ve taşınabilir bir dil olduğundan, Oracle tabanında çalışan herhangi bir program geliştirdiğiniz takdirde hiçbir değişiklik yapmadan hızlıca diğer bir Oracle veri tabanına aktarabilirsiniz.
- Gömülü bir dil olduğu için sadece Oracle veri tabanında çalıştırılabilir. C#, C++ veya Java gibi bağımsız bir dil olarak geliştirilmemiştir. Bu nedenle, Oracle veri tabanı olmayan bir sistemde SQLPL programı geliştirilemez.
- Yüksek performans veren, entegre bir dildir. Diğer programlama dillerinde başka işler yapabilirsiniz fakat, Oracle veri tabanıyla etkileşime girildiğinde, verimli bir şekilde kod yazmak için en uygun dil SQLPL'dir. Özellikle veri tabanının performansının artmasına katkı sağlayan FORALL deyimi gibi SQLPL'e özgü yapıları kullanabilirsiniz.
- Birden fazla veri satırını hızlı bir biçimde değiştirmek için koleksiyonları kullanan, DELETE'ler, INSDERT'ler ve UPDATE'ler, FORALL olarak adlandırılır.
- Tek bir alımla birden fazla satır alan ve veri alma hızını yükselten select ifadelere Bulk Colelcr adı verilir.
SQLPL'in Yararları Nelerdir?
- SQL prosedürel bir yapıya sahip değildir fakat, SQLPL de tam tersine prosedürel yapı bulunur. Kısacası, 'if else, ehile, for' gibi kontrol mekanizmalarına izin verir.
- Tek seferde birden çok işlem yapabildiği için daha hızlı sonuç alınır.
- Oracle Forms Oracle Report gibi iş araçlarına kolaylıkla entegre olabilir.
- Loglama işlemlerinin gerçekleştirilmesi gibi pek çok yararı vardır.
Bir SQLPL Kodu Nasıl Çalıştırılır?
SQLPL engine kodunun görevi byte kodunu derlemektir. Derleme işleminin ardından meydana gelen byte kodu çalıştırılır. Bu motor sadece bir Oracle veri tabanı sunucusuna ya da Oracle Forms, Oracle Apex gibi uygulama geliştirme araçlarına kurulabilir.
Oracle veri tabanı sunucusuna bir kod bloğu yollandığında, SQLPL engine, kodu derlemek ve yürütmek için SQL motoruyla beraber çalışır. Bu motorun temel işlevi prosedürel ögeleri çalıştırmasıdır. SQL motoru da SQL ifadelerini işler.
SQLPL'in Ana Özellikleri Nelerdir?
SQL programlama dilinin veri sorgulama gücüyle değiştirme gücü, yine SQL'in fonksiyonel yaklaşımı ile birleşir. Bu durumu bir örnekle açıklamak gerekirse; 2 farklı SQL sorgusu olduğunu varsayın. Bu koşullardan bir tanesi doğruysa 1. SQL, yanlışsa da 2. SQL'in çalışmasını istiyorsanız, bu noktada SQL ile SQLPL'in güçlerinin birleşmesi gerekir. İçerisinde bulunan 'If Else Then' yapısı sayesinde bu birleşmeyi rahatça gerçekleştirebilirsiniz. Daha karmaşık problemlerde de tüm sorunların yönetilebilmesi adına parçalara ayrılması gerekir. Kısacası SQLPL'in gücüne ve prosedürel yaklaşımına ihtiyaç vardır.
1. Error Handling (Hata Yönetimi)
SQLPL'de hata yönetimi son derece anlaşılır bir dilde yapılır. Bir hata meydana geldiğinde SQLPL kodu, anında bir hata fırlatır. Bunlara ORA hataları denir. ORA-04030 hatası ve ORA-00932 hatası bu hatalara birer örnektir. Bu hataların çözüme kavuşturulabilmesi için dikkatli okuma yapılmalıdır. Buna ek olarak kullanıcılar, kendi hatalarını oluşturup, bu hatalara isim verip, diledikleri zaman diledikleri koşulda kendilerine hata olarak dönmelerini sağlayabilirler.
2. Blok Structure (Blok Yapısı)
Her SQLPL programının içerisinde SQL ve SQLPL ifadeleri yer alır. Tüm bunlar SQLPL bloğunu meydana getirir. Bu blok toplamda 4 aşamadan oluşur; Declare, Begin, Exception ve End.
Declare: Değişkenler bu bölümde bildirilir.
Begin: SQLPL bloğunun başlamasında anahtar kelime 'begin'dir. 'End' anahtarıyla da sona erer. Programın temel mantığı bu bölümde işler. İçerisinde; SQL sorguları, şartlı ifadeler ve döngüler yer alır.
Exception: İstisnai durumların ortaya çıkabileceği bölümdür. Programda meydana gelen hatalar bu bölümde ayrıştırılır.
End: SQLPL bloğunu bitiren bölümdür.
3. Constants and Variables (Değişkenler ve Sabitler)
Diğer programlama dillerinin de içerisinde barındırdığı bu özellik, SQLPL dilinde de kullanıcılara sabit ya da değişkenleri tanımlama ve bunları kod blokları içerisinde kullanabilme imkanı sunar. Değişkenler, kod bloğu içerisinde değiştirilebilse de sabitler değiştirilemez.
4. Subprograms (Alt Programlar)
Kullanıcının ihtiyaç duyduğu anda çağırabildiği kod bloğuna alt program adı verilir. Bu bir fonksiyon ya da prosedür olabilir. Örnek erecek olursak; Bir fonksiyonun ağırlıklı ortalama bir işlem gerçekleştirdiğini varsayın. Pek çok yerde bu işlemi hayata geçirebilmek adına oluşturduğunuz fonksiyonu çağırmaya ihtiyaç duyabilirsiniz. Fonksiyon ve prosedürler, sürekli aynı işlemi yazmak yerine, aynı işlemi tek seferde yazıp devamlı çağırabileceğiniz alt programlardır.
5. Packages (Paketler)
Bir paket, içerisinde sabitleri ya değişkenleri, fonksiyonları, hataları, cursorları, prosedürleri ve tipleri bulunduran bir şema objesidir. Kısacası bir paketi, bir uygulama gibi değerlendirebiliriz. Tabii kendi paketlerinizi yazmanız da mümkün.
Bu paketler 2 aşamada meydana getirilirler. Bunlarda ilki, paketin tanımının yani içerisinde kullanacağınız bütün yapıları kısaca tanımlamak zorunda olduğunuz pakettir. İkinci paket ise paketin gövde kısmıdır. Bu kısım, bütün kodların yazıldığı yerdir.
6. Triggers (Tetikleyiciler)
Bu durumu bir örnekle açıklamak gerekirse, bir Oracle veri tabanında bir olayın gerçekleştiğini be bu olayın gerçekleşme anını sürekli olarak izleyemediğinizi varsayın. Hatta bu olay bir veri değişikliği olsun. Bu veri değiştirildiğinde gerçekleşmesini istediğiniz olayları trigger, yani tetikleyici olarak tanımlamalısınız. Böylelikle verilerinizde meydana gelen değişiklikleri tetikleyicilerle rahatça yönetebilirsiniz.
Veri Tabanında Gerçekleştirilen İşlemler
DDL (Veri Tanımlama Dili): Veri tabanının yapısını, şema ve tabloları tanımlanmasında kullanılır.
DML (Veri Düzenleme Dili): Veri tabanı içerisinde yer alan verilerin, tablo ve şemaların yönetilmesinde kullanılır.
TCL (İşlem Kontrol Dili): Transaction veri tabanında meydana gelen işlem veya işlemlerdir. Bu işlemler sayesinde tablo, şema gibi depo birimlerinde veya datalar üzerinde yapılacak değişikliklerin geçerli olmasını ya da iptal edilmesini sağlayabilirsiniz. Bu sayede transactionları kontrol etmiş olursunuz.
DCL (Veri Kontrol Dili): Veri tabanındaki datalara erişimi kontrol etmek için kullanılan komutlardır.