Foruma hoş geldin 👋, Ziyaretçi

Merhaba Değerli Ziyaretçimiz, ForumaGel ailesi seni bekliyor! 🌟 Aramıza katılarak güçlü ve samimi topluluğumuzun bir parçası olabilirsin. Burada her üye değerli, her katkı kıymetli. Şimdi üye ol, bizimle birlikte gelişmenin ve keyifli sohbetlerin tadını çıkar! Sevgi ve Saygılarla, ForumaGel Yönetimi ❤️

SignUp Now!
  • Merhaba Değerli Ziyaretçimiz, ForumaGel ailesi seni bekliyor! 🌟 Aramıza katılarak güçlü ve samimi topluluğumuzun bir parçası olabilirsin. Burada her üye değerli, her katkı kıymetli. Şimdi üye ol, bizimle birlikte gelişmenin ve keyifli sohbetlerin tadını çıkar! Sevgi ve Saygılarla, ForumaGel Yönetimi ❤️
Yan Yana Banner
Katılım
7 Nis 2025
Mesajlar
782
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ı:

  • 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.
Temel Sözdizimi (DBMS'e Göre Küçük Farklılıklar Olabilir):

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 veya JOIN işleminde kullanılabilirler.
Temel Sözdizimi (Scalar Function - DBMS'e Göre Farklılıklar Olabilir):

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. Fonksiyonlar RETURN 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 veya CALL 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.
Ne Zaman Hangisini Kullanmalı?

  • 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çinde SELECT veya WHERE gibi yerlerde kullanmak istediğinizde Fonksiyonları tercih edin.
Saklı yordamlar ve fonksiyonlar, veritabanı uygulamalarınızın performansını, güvenliğini ve yönetilebilirliğini artırmada önemli rol oynar. Ancak karmaşıklığı artırabileceğinden ve veritabanı bağımlılığı yaratabileceğinden, dikkatli ve iyi planlanmış bir şekilde kullanılmaları gerekir.

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.


 

Şu an konuyu görüntüleyenler

Geri
Üst