Excel Eğitimleri

Stored Procedures (Saklı Yordamlar), SQL’de bir dizi komutu bir araya getirerek belirli işlemleri otomatikleştiren, veritabanı işlemlerini kolaylaştıran ve tekrarlayan görevleri hızlandıran kod bloklarıdır. Bu yordamlar, özellikle karmaşık işlemleri tekrar tekrar yürütme gereksinimi olduğunda veya belirli görevleri daha dinamik hale getirmek istendiğinde kullanışlıdır. Bu yazıda, SQL’de stored procedures oluşturma, kullanma, parametrelerle çalıştırma ve ileri kullanım tekniklerini detaylandıracağız.

sql Stored Procedures (Saklı Yordamlar) Kullanımı

Stored Procedures Oluşturma

Stored procedures, bir veya birden fazla SQL komutunu içerebilen ve önceden tanımlanmış kod bloklarıdır. İşlem basit bir SELECT sorgusu olabileceği gibi, karmaşık veri manipülasyonları da olabilir.

CREATE PROCEDURE Komutu

CREATE PROCEDURE komutu, yeni bir stored procedure oluşturmak için kullanılır. Bu komutla veritabanında bir saklı yordam tanımlayabilir ve içeriğinde belirli işlemleri gerçekleştirecek SQL ifadeleri yazabilirsiniz.

Genel yapısı şu şekildedir:

CREATE PROCEDURE procedure_adı

AS

BEGIN

    — SQL işlemleri

END;

Örneğin, bir tablodaki tüm verileri seçen basit bir stored procedure şu şekilde yazılabilir:

CREATE PROCEDURE get_tüm_çalışanlar

AS

BEGIN

    SELECT * FROM çalışanlar;

END;

Bu stored procedure, çalışanlar tablosundaki tüm verileri seçer ve saklı yordam çağrıldığında bu verileri döndürür.

Parametre Kullanımı

Stored procedures, dinamik sorgular oluşturmak ve farklı koşullar altında çalışmak için parametreler alabilir. Bu parametreler yardımıyla aynı stored procedure farklı giriş değerleri ile çalıştırılabilir.

Bir parametre kullanarak oluşturulan stored procedure örneği:

CREATE PROCEDURE get_çalışan_bilgi @çalışan_id INT

AS

BEGIN

    SELECT * FROM çalışanlar WHERE çalışan_id = @çalışan_id;

END;

Bu örnekte, @çalışan_id parametresi sayesinde, sadece girilen çalışan ID’sine ait veriler döndürülecektir. Parametreler, yordamın daha dinamik hale getirilmesine ve farklı koşullara göre farklı sonuçlar üretmesine olanak tanır.

Stored Procedures Kullanma

Bir stored procedure oluşturduktan sonra, bu yordamı çağırarak çalıştırabilirsiniz. Stored procedure’ler bir tablo gibi sorgulanmaz; EXECUTE komutu ile çalıştırılırlar.

EXECUTE Komutu

Stored procedure’ü çalıştırmak için EXECUTE (veya kısa haliyle EXEC) komutu kullanılır. Aşağıda basit bir stored procedure’ün nasıl çalıştırılacağını gösteren bir örnek bulunuyor:

EXEC get_tüm_çalışanlar;

Bu komut, get_tüm_çalışanlar adlı stored procedure’ü çalıştırır ve tüm çalışan verilerini döndürür.

Parametre ile Çalıştırma

Parametre alan stored procedure’ler, çalıştırılırken bu parametrelerin de belirtilmesini gerektirir. Parametreli bir stored procedure’ü çalıştırmak için şu şekilde bir yapı kullanılır:

EXEC get_çalışan_bilgi @çalışan_id = 5;

Bu komut, get_çalışan_bilgi stored procedure’ünü çalıştırır ve çalışan_id değeri 5 olan çalışanın bilgilerini döndürür.

Parametrelerle çalıştırılan stored procedure’ler, farklı girişlerle aynı yordamı farklı senaryolarda kullanarak daha esnek sorgulamalar yapmanızı sağlar.

Stored Procedures ile İleri Kullanım

Stored procedures, sadece basit sorguları yürütmek için değil, aynı zamanda daha karmaşık işlevleri otomatikleştirmek ve optimize etmek için de kullanılır. Birden fazla SQL komutunu birleştirerek tek bir işlem seti haline getirebilir, hatta koşullu mantık ve döngüler ekleyebilirsiniz.

Karmaşık İşlemler

Stored procedures, birden fazla SQL komutunu içerebilir. Bu, örneğin bir veri ekleme, güncelleme ve silme işlemini tek bir prosedürde gerçekleştirmeyi sağlar. Aynı zamanda koşullu ifadeler (IF-ELSE) ve döngüler (LOOP) gibi yapılar da kullanılabilir.

Birden fazla işlem içeren bir stored procedure örneği:

CREATE PROCEDURE çalışan_güncelle_sil @çalışan_id INT, @işlem NVARCHAR(10)

AS

BEGIN

    IF @işlem = ‘güncelle’

    BEGIN

        UPDATE çalışanlar

        SET pozisyon = ‘Kıdemli’

        WHERE çalışan_id = @çalışan_id;

    END

    ELSE IF @işlem = ‘sil’

    BEGIN

        DELETE FROM çalışanlar

        WHERE çalışan_id = @çalışan_id;

    END

END;

Bu stored procedure, bir çalışanı güncelleme veya silme işlemini, parametre olarak verilen @işlem değeri doğrultusunda gerçekleştirir.

Performans Optimizasyonu

Stored procedures, SQL sorgularının performansını artırmak için de kullanılabilir. Saklı yordamlar veritabanı tarafından önceden derlenip saklanır, bu da onları tekrar tekrar çalıştırdığınızda daha hızlı sonuç verir. Bu özellik, yoğun kullanılan veya karmaşık sorgular içeren stored procedures için büyük avantaj sağlar.

Ayrıca, karmaşık sorguların her seferinde derlenmek yerine bir stored procedure olarak kullanılması, veritabanı sunucusundaki iş yükünü hafifletir.

Güvenlik ve Erişim Kontrolü

Stored procedures, veritabanında veri güvenliğini artırmak için de kullanılabilir. Kullanıcıların doğrudan tabloya erişimini engelleyip, sadece saklı yordamlar üzerinden veri işlemlerine izin vererek hassas verilerin korunması sağlanabilir. Bu sayede, kullanıcılar sadece belirlenen işlemleri yapabilir, tablodaki tüm verilere veya yapılmaması gereken işlemlere erişemezler.

Örneğin, kullanıcıların sadece kendi siparişlerini görmelerini sağlayan bir stored procedure şu şekilde olabilir:

CREATE PROCEDURE get_kullanıcı_siparişleri @kullanıcı_id INT

AS

BEGIN

    SELECT * FROM siparişler WHERE kullanıcı_id = @kullanıcı_id;

END;

Bu stored procedure, sadece belirli bir kullanıcıya ait siparişlerin görüntülenmesine izin verir.

Stored Procedures ile Performans ve Sınırlamalar

Performans Avantajları

Stored procedures, özellikle tekrarlayan işlemler ve karmaşık sorgular söz konusu olduğunda, performans açısından büyük avantaj sağlar. Derlenmiş olmaları sayesinde, birden fazla çalıştırıldığında hızlı bir şekilde sonuç verirler. Bu, özellikle çok yoğun veri tabanı operasyonları gerçekleştiren uygulamalarda performans iyileştirmesi sağlar.

Sınırlamalar

Stored procedures, tüm SQL ifadelerini desteklemeyebilir. Örneğin, bazı veritabanı sistemlerinde DDL (Data Definition Language) komutlarıyla (örneğin CREATE, ALTER, DROP) stored procedure’ler içinde çalışmak mümkün olmayabilir. Ayrıca, saklı yordamlar büyük ve karmaşık hale geldikçe, bu yordamların bakımı ve anlaşılması zorlaşabilir.

Stored procedures (saklı yordamlar), SQL’de tekrarlayan işlemleri otomatikleştirerek ve karmaşık sorguları sadeleştirerek veritabanı işlemlerini hızlandıran ve güvenliğini artıran güçlü bir araçtır. Bu teknikleri öğrenerek veritabanı yönetiminde daha esnek, güvenli ve performanslı işlemler gerçekleştirebilirsiniz. Stored procedures, özellikle yoğun veritabanı operasyonları gerektiren senaryolarda etkili bir şekilde kullanılabilir, ancak performans ve yapılandırma sınırlamaları göz önünde bulundurulmalıdır.