PL/SQL Nedir, Saklı Yordam ve Tetikleyici Ne İşe Yarar?

Haberci

SEO UZMANI
Yönetici
Katılım
21 May 2023
Mesajlar
622
Tepki
17
Puan
18
881




Veritabanı tarafında çalışan bir iş, uygulamadan tek tek sorgu göndererek de yapılabiliyor, veritabanının içinde çalışan bir programla da. İkinci yolun adı çoğu belgede kısaltmayla geçiyor ve ilk karşılaşmada SQL ile karıştırılıyor.

Aşağıda bu dilin ne olduğunu, SQL ile ilişkisini, bir kod bloğunun hangi bölümlerden oluştuğunu ve saklı yordam ile tetikleyicinin ne işe yaradığını Oracle'ın kendi belgesine dayanarak bulacaksınız.

Tanımı ne söylüyor?​


Oracle'ın PL/SQL belgesi dili şöyle tanımlıyor: SQL'in prosedürel uzantısı olan, taşınabilir ve yüksek başarımlı bir işlem işleme dili.

Buradaki "uzantı" kelimesi anahtar. Dil, SQL'in yerine geçmiyor; onun üzerine karar verme, döngü ve hata yönetimi gibi programlama yeteneklerini ekliyor.

Belgeye göre dil, SQL'in bütün veri işleme, imleç kontrolü ve işlem kontrolü ifadelerini, fonksiyonlarını ve operatörlerini tam olarak destekliyor; veri türleri de doğrudan uyumlu.

Kod neye benziyor?​


Belge yapıyı blok üzerinden anlatıyor. Bir blok üç bölümden oluşuyor ve yalnız ortadaki zorunlu:

  • Bildirim bölümü: İsteğe bağlı. Yerel türler, değişkenler ve alt programlar burada tanımlanıyor.
  • Yürütme bölümü: Zorunlu. Çalıştırılacak ifadeler burada duruyor ve hem SQL hem de dilin kendi ifadeleri kullanılabiliyor.
  • İstisna bölümü: İsteğe bağlı. Hata durumunda devreye giren kısım.

Belge bildirim bölümü için bir ayrıntı daha veriyor: buradaki tanımlar bloğun kapsamına yerel oluyor ve blok tamamlandığında siliniyor.

Hata yönetimi neden ayrı bölümde?​


Belgenin tarifi şöyle: bir hata meydana geldiğinde dil bir istisna oluşturuyor ve kontrol istisna bölümüne aktarılıyor.

Sonucu da yazıyor: her işlemi tek tek kontrol etmeye gerek kalmıyor. Yani hata denetimini her satırın yanına serpiştirmek yerine tek yerde toplayabiliyorsunuz.

Uygulama tarafıyla farkı' Alıntı:
Uygulama katmanında yazılan hata denetimi ağ üzerinden dönen sonuca bakar; blok içindeki istisna bölümü ise hatayı oluştuğu yerde, veritabanının içinde yakalar.

Saklı yordam ve tetikleyici​


Belge iki adlandırılmış yapıyı ayrı ayrı tanımlıyor. Saklı yordam, adlandırılmış bir blok; veritabanında saklanıyor, sunucuda çalışıyor ve tekrar tekrar çağrılabiliyor.

Tetikleyici ise yine veritabanında saklanan adlandırılmış bir birim, ancak çağrılarak değil, veritabanında meydana gelen bir olaya yanıt olarak çalışıyor.

Aradaki fark pratikte şuna denk geliyor: yordamı siz çağırıyorsunuz, tetikleyiciyi olay çağırıyor. Kayıt eklendiğinde otomatik işleyen bir denetim, tetikleyicinin tipik kullanımı oluyor. Bu ayrım sorun ararken de işe yarıyor: beklemediğiniz bir değişiklik görüyorsanız, önce hangi olaya bağlı bir birimin devrede olduğuna bakmak gerekiyor.

Tabloları tanımadan yazılmıyor​


Blok içinde çalışan ifadeler tablolara, sütunlara ve veri türlerine dayanıyor. Bu yüzden yapı kurulmadan yazılan yordam, ilk çalıştırmada tür uyuşmazlığıyla dönüyor.

Tablo yapısının nasıl kurulduğunu veritabanı tasarımı yazımızda adım adım anlatmıştık. Yazdığınız kodun kullanıcı girdisini nasıl ele alması gerektiğini ise enjeksiyon testi yazımızda göstermiştik; sunucu tarafında çalışan kod da aynı riski taşıyor.

Sunucuda çalışmanın bedeli var mı?​


Kodun veritabanı sunucusunda çalışması, işlemin veriye yakın yapılması demek; ağ üzerinden gidip gelen sorgu sayısı azalıyor. Buna karşılık iş mantığının bir kısmı uygulamadan çıkıp veritabanına taşınmış oluyor.

Bu tercihin sürüm yönetimi tarafında karşılığı var: yordamlar da tıpkı tablolar gibi yedeklenmesi ve geri yüklenmesi gereken nesneler. Yedeğin gerçekten geri döndüğünü sınamayı yedekleme yazımızda ele almıştık.

Nerede karşınıza çıkıyor?​


Bu yapıyı en sık üç yerde görüyorsunuz. Birincisi toplu veri işleri: binlerce kaydı tek tek uygulamadan çekip güncellemek yerine, işlemi veritabanının içinde döngüyle yürütmek.

İkincisi denetim kayıtları: bir tablodaki değişikliğin ayrı bir tabloya otomatik yazılması, olaya bağlı çalışan yapının klasik kullanımı.

Üçüncüsü ise kural doğrulama. Uygulamanın atladığı bir kural veritabanı katmanında da sınanıyorsa, farklı arayüzlerden gelen kayıtlar aynı denetimden geçmiş oluyor. Bu üç kullanımın ortak noktası, işin veriye en yakın yerde yapılması ve sonucun tek bir noktadan yönetilmesi.

Sık Sorulan Sorular​


PL/SQL nedir?
Oracle'ın belgesine göre SQL'in prosedürel uzantısı olan, taşınabilir ve yüksek başarımlı bir işlem işleme dili.

SQL ile arasındaki fark ne?
SQL veriye ne yapılacağını söylüyor; prosedürel uzantı ise karar, döngü ve hata yönetimi gibi programlama yapılarını ekliyor.

Blok hangi bölümlerden oluşuyor?
Bildirim bölümü (isteğe bağlı), yürütme bölümü (zorunlu) ve istisna bölümü (isteğe bağlı).

Saklı yordam ne işe yarıyor?
Veritabanında saklanan, sunucuda çalışan ve tekrar tekrar çağrılabilen adlandırılmış bir blok.

Tetikleyici nasıl çalışıyor?
Çağrılarak değil, veritabanında meydana gelen bir olaya yanıt olarak çalışıyor; bu yüzden kodda çağrıldığı bir satır bulamazsınız.

Özetle​


Bu dil SQL'in yerine geçmiyor, üzerine programlama yetenekleri ekliyor. Kod bloklar hâlinde yazılıyor; ortadaki yürütme bölümü zorunlu, bildirim ve istisna bölümleri isteğe bağlı. Adlandırılmış yapılar ikiye ayrılıyor: yordamı siz çağırıyorsunuz, tetikleyiciyi veritabanındaki olay çağırıyor.

Sizin projenizde iş mantığı uygulamada mı duruyor, yoksa bir kısmı veritabanına mı taşındı?

Güncelleme: 27 Ağustos 2026. Oracle'ın PL/SQL genel bakış belgesi kontrol edildi.



Dijital Dünyanıza Yön Veren Pusula
 

Ekli dosyalar

  • banner_02.jpg
    banner_02.jpg
    5.3 KB · Görüntüleme: 0
Geri
Üst