- Katılım
- 7 Nis 2025
- Konular
- 367
- Mesajlar
- 780
- Çözümler
- 1
- Tepkime puanı
- 121
- Puan
- 93
- Konum
- İstanbul
- Web sitesi
- forumagel.com
Veritabanları sadece veri depolamakla kalmaz, aynı zamanda belirli iş mantığını doğrudan kendi içinde barındırma yeteneğine de sahiptir. Saklı Yordamlar ve Fonksiyonlar, bu iş mantığını veritabanı tarafında önceden derlenmiş kod blokları olarak saklamamıza olanak tanır. Bu, özellikle sık tekrarlanan işlemler, karmaşık hesaplamalar veya iş kurallarının uygulanması gerektiğinde büyük avantajlar sağlar.
Saklı Yordamlar (Stored Procedures)
Saklı Yordam, veritabanında depolanan ve adıyla çağrılan bir veya daha fazla SQL komutundan oluşan bir prosedürdür. Uygulamalar veya kullanıcılar tarafından çalıştırılabilirler.
Amaçları ve Faydaları:
Fonksiyonlar (Functions)
Fonksiyonlar, belirli bir hesaplama yapan veya veri döndüren, genellikle tek bir değer veya bir tablo döndüren veritabanı nesneleridir. Tıpkı saklı yordamlar gibi veritabanında saklanırlar.
Fonksiyon Türleri:
Saklı Yordamlar ve Fonksiyonlar Arasındaki Temel Farklılıklar
Bu bölümde veritabanı içindeki programlanabilir nesneler olan saklı yordamlar ve fonksiyonlara giriş yaptık.
Veritabanı güvenliği, bu programlanabilir nesnelerin ve genel olarak veriye erişimin kontrol altında tutulması açısından kritik bir konudur. Bir sonraki bölümde, veritabanı güvenliğinin temel prensiplerine ve kullanıcı izinlerinin yönetimine göz atabiliriz.
Saklı Yordamlar (Stored Procedures)
Saklı Yordam, veritabanında depolanan ve adıyla çağrılan bir veya daha fazla SQL komutundan oluşan bir prosedürdür. Uygulamalar veya kullanıcılar tarafından çalıştırılabilirler.
Amaçları ve Faydaları:
- Kodun Kapsüllenmesi ve Yeniden Kullanılabilirlik: Karmaşık SQL mantığını tek bir yerde toplar ve bu mantığın farklı yerlerden kolayca tekrar tekrar kullanılmasını sağlar.
- Performans Artışı: Çoğu DBMS'te saklı yordamlar ilk çalıştırıldığında derlenir ve optimize edilir. Sonraki çalıştırmalarda bu derlenmiş plan kullanılır, bu da performansı artırabilir.
- Güvenlik: Kullanıcılara doğrudan tablolara erişim izni vermek yerine, yalnızca belirli saklı yordamları çalıştırma izni verilebilir. Bu, veri üzerinde daha sıkı kontrol sağlar.
- Ağ Trafiğinin Azalması: Uygulamadan veritabanına birden fazla SQL komutu göndermek yerine, tek bir saklı yordamı çağırmak yeterli olur, bu da ağ üzerindeki veri miktarını azaltır.
- Bakım Kolaylığı: İş mantığında bir değişiklik yapılması gerektiğinde, sadece saklı yordam güncellenir ve bu değişiklik onu kullanan tüm uygulamaları etkiler.
Kod:
-- Saklı Yordam OluşturmaCREATE PROCEDURE SakliYordamAdi@Parametre1 VeriTipi, -- Giriş parametreleri (isteğe bağlı)@Parametre2 VeriTipi OUTPUT -- Çıkış parametreleri (isteğe bağlı)ASBEGIN-- SQL Komutları Buraya YazılırSELECT * FROM TabloAdi WHERE Sutun = @Parametre1;SET @Parametre2 = (SELECT COUNT(*) FROM TabloAdi WHERE Sutun = @Parametre1);END;GO -- SQL Server gibi bazı DBMS'lerde komut ayırıcı
-- Saklı Yordamı ÇalıştırmaEXEC SakliYordamAdi @Deger1, @Deger2 OUTPUT; -- SQL Server-- veyaCALL SakliYordamAdi(Deger1, @Deger2); -- MySQL gibi
Fonksiyonlar (Functions)
Fonksiyonlar, belirli bir hesaplama yapan veya veri döndüren, genellikle tek bir değer veya bir tablo döndüren veritabanı nesneleridir. Tıpkı saklı yordamlar gibi veritabanında saklanırlar.
Fonksiyon Türleri:
- Scalar Functions: Tek bir değer döndürür. SQL sorgularında bir sütun veya değer gibi kullanılabilirler.
- Table-Valued Functions (Tablo Değerli Fonksiyonlar): Bir sonuç kümesi (tablo) döndürür. Sorgularda
FROM
yan tümcesinde veyaJOIN
işleminde kullanılabilirler.
Kod:
-- Fonksiyon Oluşturma (Scalar)CREATE FUNCTION FonksiyonAdi(@Parametre1 VeriTipi) -- Giriş parametreleriRETURNS VeriTipi -- Döndürülecek değerin veri tipiASBEGINDECLARE @Sonuc VeriTipi; -- Yerel değişkenSET @Sonuc = (SELECT COUNT(*) FROM TabloAdi WHERE Sutun = @Parametre1);RETURN @Sonuc; -- Değer döndürmeEND;GO
-- Fonksiyonu KullanmaSELECT Sutun1, dbo.FonksiyonAdi(Sutun2) AS HesaplananDeger FROM TabloAdi; -- SQL Server'da şema adı ile-- veyaSELECT Sutun1, FonksiyonAdi(Sutun2) FROM TabloAdi; -- Diğer DBMS'lerde
Saklı Yordamlar ve Fonksiyonlar Arasındaki Temel Farklılıklar
- Dönüş Değeri: Fonksiyonlar genellikle tek bir değer (Scalar) veya bir tablo döndürürken, saklı yordamlar değer döndürebilir (OUTPUT parametreleri veya
SELECT
ifadeleri ile) ancak ana amaçları bir dizi komutu çalıştırmaktır. FonksiyonlarRETURN
ifadesi ile bir değer döndürmek zorundadır. - Sorgularda Kullanım: Fonksiyonlar (Scalar olanlar) doğrudan
SELECT
,WHERE
veya diğer SQL komutları içinde kullanılabilir. Saklı yordamlar ise bu şekilde doğrudan kullanılamaz,EXECUTE
veyaCALL
komutları ile çağrılırlar. - Veri Değişikliği (DML): Saklı yordamlar
INSERT
,UPDATE
,DELETE
gibi veri değiştirme işlemlerini (DML
) içerebilir. Fonksiyonlar ise genellikle bu tür işlemleri doğrudan yapamaz (saf fonksiyonlar olması istenir, ancak bazı DBMS'lerde kısıtlıDML
'ye izin verilebilir). Fonksiyonlar daha çok hesaplama odaklıdır. - Transaction Yönetimi: Saklı yordamlar içinde transaction (
BEGIN TRAN
,COMMIT
,ROLLBACK
) yönetimi yapılabilir. Fonksiyonlar içinde transaction yönetimi yapılamaz, fonksiyonu çağıran sorgunun transaction'ı içindeyken çalışırlar.
- Bir veya daha fazla
SELECT
,INSERT
,UPDATE
,DELETE
komutunu içeren, bir dizi işlemi gerçekleştirecek mantığı kapsüllemek istediğinizde Saklı Yordamları tercih edin. - Bir veya daha fazla parametre alıp tek bir hesaplanmış değer döndüren veya bir sonuç kümesi (
SELECT
sonucu) döndüren ve SQL sorguları içindeSELECT
veyaWHERE
gibi yerlerde kullanmak istediğinizde Fonksiyonları tercih edin.
Bu bölümde veritabanı içindeki programlanabilir nesneler olan saklı yordamlar ve fonksiyonlara giriş yaptık.
Veritabanı güvenliği, bu programlanabilir nesnelerin ve genel olarak veriye erişimin kontrol altında tutulması açısından kritik bir konudur. Bir sonraki bölümde, veritabanı güvenliğinin temel prensiplerine ve kullanıcı izinlerinin yönetimine göz atabiliriz.