PL/SQL’de Paket (Package) Nedir? İçeriğinde Neler Bulunur?
Oracle PL/SQL'de Package (Paket), ilgili prosedürleri, fonksiyonları, değişkenleri ve diğer bileşenleri tek bir modülde gruplayarak yönetmeyi sağlayan güçlü bir yapıdır. Büyük ve kompleks PL/SQL projelerinde kod organizasyonunu ve performansı artırır.
PL/SQL mülakatlarında "Package kullanımı hakkında bilgin var mı?" veya "Stored Procedure mü, Package mi kullanmalıyız?" gibi sorular karşına çıkabilir. Bu makalede PL/SQL'de Paket'in ne olduğunu, içeriğinde neler bulunduğunu ve neden önemli olduğunu detaylıca ele alacağız.
- PL/SQL'de Package (Paket) Nedir?
📌 Package, birbiriyle ilişkili Stored Procedure, Function, Cursor, Değişken ve Exception tanımlarını tek bir çatı altında toplayan PL/SQL nesnesidir.
📢 Neden Kullanılır?
✔ Kodun yeniden kullanılabilirliğini artırır
✔ Kod organizasyonunu sağlar
✔ Performansı artırır (Önceden derlenmiş kod)
✔ Güvenlik ve gizliliği artırır (Özel ve genel bileşenler)
📢 Package ile Stored Procedure arasındaki fark:
Stored Procedure’ler bağımsızdır ve her seferinde yüklenir. Package'ler ise bellekte saklanır ve daha hızlı çalışır.
- PL/SQL Package İçeriğinde Neler Bulunur?
PL/SQL package’ler iki ana bileşenden oluşur:
1️⃣ Package Specification (Tanımlama Kısmı)
Dışarıdan erişilebilecek prosedürleri, fonksiyonları, değişkenleri ve cursor’ları tanımlar.
Ne yapılacağını belirtir, ama nasıl yapılacağını içermez.
2️⃣ Package Body (Gövde Kısmı)
Tanımlanan prosedür ve fonksiyonların içeriklerini (iş mantığını) barındırır.
Özel (private) alt programlar oluşturulabilir (sadece package içinde kullanılabilir).
📌 Package Specification ve Body bağımsız olarak derlenebilir.
- PL/SQL Package Örnek Kullanımı
Bir hasta yönetim sisteminde, hastaların bilgilerini yönetmek için bir HASTA_PKG paketi oluşturalım.
🔹 Package Specification (Tanımlama Kısmı)
CREATE OR REPLACE PACKAGE HASTA_PKG AS
-- Global değişken
hasta_sayisi NUMBER := 0;
-- Prosedür tanımları
PROCEDURE hasta_ekle(p_id IN NUMBER, p_ad IN VARCHAR2, p_soyad IN VARCHAR2);
-- Fonksiyon tanımları
FUNCTION hasta_sayisini_al RETURN NUMBER;
END HASTA_PKG;
/
📌 Ne Yapıyor?
hasta_ekle prosedürü hasta ekleme işlemini yapacak.
hasta_sayisini_al fonksiyonu toplam hasta sayısını döndürecek.
Global değişken olan hasta_sayisi, paketin içinde takip edilecek.
🔹 Package Body (Gövde Kısmı)
CREATE OR REPLACE PACKAGE BODY HASTA_PKG AS
-- Hasta ekleyen prosedür
PROCEDURE hasta_ekle(p_id IN NUMBER, p_ad IN VARCHAR2, p_soyad IN VARCHAR2) AS
BEGIN
INSERT INTO hastalar (id, ad, soyad) VALUES (p_id, p_ad, p_soyad);
COMMIT;
hasta_sayisi := hasta_sayisi + 1;
END hasta_ekle;
-- Hasta sayısını döndüren fonksiyon
FUNCTION hasta_sayisini_al RETURN NUMBER AS
BEGIN
RETURN hasta_sayisi;
END hasta_sayisini_al;
END HASTA_PKG;
/
📌 Ne Yapıyor?
hasta_ekle prosedürü bir hasta eklediğinde, hasta_sayisi değişkenini artırıyor.
hasta_sayisini_al fonksiyonu, toplam hasta sayısını döndürüyor.
- PL/SQL Package Nasıl Kullanılır?
Package içindeki prosedür ve fonksiyonları çağırmak için:
EXEC HASTA_PKG.hasta_ekle(101, 'Ali', 'Demir');
Function çağırmak için:
SELECT HASTA_PKG.hasta_sayisini_al FROM dual;
- PL/SQL Package Kullanımının Avantajları
📌 ✅ Performans Artışı:
Package içindeki tüm bileşenler ilk çağrıldığında belleğe yüklenir, böylece sonraki çağrılarda daha hızlı çalışır.
📌 ✅ Kod Organizasyonu:
İlgili prosedür ve fonksiyonları tek bir modülde toplar.
📌 ✅ Güvenlik ve Encapsulation:
Özel (private) prosedür ve fonksiyonlar yalnızca package içinde kullanılabilir.
📌 ✅ Bağımsız Geliştirme:
Package Specification değişmeden, Body güncellenebilir, böylece bağlı nesneler etkilenmez.
- PL/SQL Package ile İlgili Gelebilecek Sorular
PL/SQL Package kullanımı hakkında şu sorular karşına çıkabilir:
Soru 1: Package ve Stored Procedure arasındaki fark nedir?
Cevap:
Stored Procedure bağımsız çalışır, her çağrıldığında yeniden yüklenir.
Package bellekte saklanır, performans avantajı sunar.
Package içinde birden fazla prosedür ve fonksiyon saklanabilir.
Soru 2: Package içindeki bir fonksiyon özel olabilir mi?
Cevap:
Evet, Package Body içinde tanımlanan fonksiyonlar özel (private) olabilir. Package Specification içinde belirtilmezse, dışarıdan çağrılamaz.
Soru 3: Bir Package’in sadece Body kısmını güncelleyebilir miyiz?
Cevap:
Evet! Package Specification değişmeden, sadece Body güncellenebilir. Bu sayede bağlı nesneleri etkilemeden geliştirme yapabiliriz.
- Sonuç
PL/SQL'de Package, ilgili prosedür, fonksiyon ve değişkenleri tek bir çatı altında toplamak için kullanılan güçlü bir araçtır. Kod organizasyonu sağlar, performansı artırır ve güvenliği artırır.
🎯 Özetle:
✅ Package, ilgili PL/SQL nesnelerini gruplar.
✅ Daha hızlı çalışır çünkü bellekte saklanır.
✅ Güvenlik sağlar, özel bileşenler oluşturulabilir.
Top comments (0)