Oracle PL/SQL, verimli ve sorunsuz uygulamalar geliştirmek için modern özellikler sunan dinamik ve sağlam bir programlama dilidir. Genellikle Microsoft'un T-SQL'i ile karşılaştırılan PL/SQL, standart SQL'e prosedürler ve fonksiyonlar ekleyerek veritabanı uygulamalarının yeteneklerini artırır. İşlem gücü göz önüne alındığında, karmaşık hesaplamalar ve yoğun veri manipülasyonları çalıştırmak için ideal bir seçimdir.
PL/SQL'e genel bakış
PL/SQL, SQL'in doğal, verimli ve güvenli bir programlama ortamı yaratan prosedürel bir uzantısıdır. SQL veri manipülasyonunu tamamen destekler ve kayıtlı prosedürlere ve işlevlere, daha iyi hata yönetimine ve SQL'de genellikle bulunmayan sağlam standartlara izin vererek bunu geliştirir.
PL/SQL blok yapılıdır ve her anonim blok veya alt programın, tüm değişkenlerin, imleçlerin, kullanıcı tanımlı istisnaların ve alt programların bildirildiği isteğe bağlı bir bildirim bölümü vardır. Ayrıca, PL/SQL prosedürel bir dil olduğundan, yinelemeyi, koşullu dallanmayı destekler ve kullanıcı tanımlı alt programlar aracılığıyla yeniden kullanılabilirliğe olanak tanır.
PL/SQL ile Sorun Çözmek
Burada yaygın bir sorunu çözen bir PL/SQL bloğu yazacağız: olası istisnalar dışında veritabanı tablolarından bilgi almak.
Öncelikle veritabanından alınan verileri tutacak değişkenleri tanımlamamız gerekiyor. PL/SQL'de değişkenleri bir bloğun bildirim bölümünde bildiririz.
DECLARE l_name employees.last_name%TYPE; l_salary employees.salary%TYPE; l_emp_id employees.employee_id%TYPE := &Emp_Id; BEGIN ...
Ana eylem yürütme bölümünde gerçekleşir:
...
BEGIN
SELECT last_name, salary
INTO l_name, l_salary
FROM employees
WHERE employee_id = l_emp_id;
DBMS_OUTPUT.PUT_LINE('Name: ' || l_name);
DBMS_OUTPUT.PUT_LINE('Salary: ' || l_salary);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('No employee found with ID: ' || l_emp_id);
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error occurred: ' || SQLCODE || ' - ' || SQLERRM);
END;
Hata İşlemenin Önemi
PL/SQL uygulamalarında etkili hata yönetimi, hata ayıklama süresini önemli ölçüde azaltmaya ve uygulamanın sağlamlığını artırmaya yardımcı olabilir.
Yukarıdaki scriptte istisna (hata) olasılığını ele aldık. Belirtilen Çalışan Kimliği mevcut değilse SELECT INTO ifadesi bir NO_DATA_FOUND istisnası oluşturur. Başka bir istisna ortaya çıkarsa OTHERS işleyicisi bunu yakalar.
Bu tür istisna yönetimi, PL/SQL'in sağlamlığının ve uygulamanın kontrol akışını yönetme yeteneğinin en önemli örneklerinden biridir.
PL/SQL Kütüphaneleri ve Paketleri
PL/SQL, yaygın sorunların çözümüne yardımcı olan önceden tanımlanmış SQL paketlerinin kullanımına olanak tanır. Örneğin, önceki örnekte verileri konsola yazdırmak için DBMS_OUTPUT paketi kullanılmıştır.
DBMS_SQL (dinamik SQL), UTL_FILE (sunucu tarafı dosyaları işleme), UTL_MAIL (PL/SQL'den e-posta gönderme) vb. gibi daha birçok benzer paket vardır. Bu paketler, PL/SQL'in güçlü prosedür dili özellikleriyle birleştiğinde, aşağıdakileri sunar: Güçlü veritabanı uygulamaları geliştirmek için sağlam yetenekler.
PL/SQL'in Avantajları
PL/SQL'in bazı önemli avantajları arasında SQL desteği, taşınabilirliği, güvenliği ve mükemmel performansı yer alır. SQL ile yakın entegrasyonu nedeniyle tüm SQL veri türlerini, tüm SQL fonksiyonlarını ve operatörlerini kullanabilirsiniz.
İstisna yönetimi, kapsülleme, veri gizleme ve devralma gibi gelişmiş özellikler sağlayarak üretkenliği artırır. PL/SQL ayrıca karmaşık SQL sorgularının çıktısını işlemek için bellek alanları olarak adlandırılan imleçleri de destekler.
PL/SQL ile güçlü güvenlik politikaları uygulayarak verilerinizi yetkisiz kullanıcılardan koruyabilirsiniz. Ayrıca hem statik hem de dinamik SQL desteğine sahiptir ve bu da kapasitesini daha da artırır.
PL/SQL ayrıca, SQL ifadelerinin tek bir çağrıyla veritabanı sunucusuna gönderilebilecek tek bir blokta paketlenmesine izin vererek mükemmel performans sunar. Bu, ağ trafiğini azaltır ve uygulamanın yürütme hızını artırır.
