• 34ºc, Sunny
  • Tuesday, 18th June, 2019

SQL Server'da Değişkenler, Akış Kontrolleri ve Try-Catch Yapısı: Temel Rehber

SQL Server’da script yazarken veri kontrolü, hata yönetimi ve daha okunabilir bir yapı için değişkenler ve akış kontrol deyimleri oldukça önemlidir. Bu yazımda, değişken tanımlamadan Try-Catch yapılarına kadar temel konuları örneklerle açıklayacağım.

🔸 Değişken Tanımı

SQL Server’da değişkenler @ sembolü ile tanımlanır.

Örnek:

@ad, @soyad, @okulNo

Değişken tanımlamak için DECLARE ifadesi kullanılır.

Örnek:

DECLARE @ad NVARCHAR(50), @soyad NVARCHAR(50), @tarih DATETIME

🔸 Değişkenlere Değer Atama

Atama işlemi doğrudan = operatörü ile yapılmaz. Bunun yerine SELECT veya SET kullanılır.

Doğru kullanım:

SELECT @numara = 10
-- veya
SET @numara = 10

Birden fazla atama:

SELECT @ad = 'Ümit', @soyad = 'Akpınar', @okulNo = '2413515003'

🔸 Kullanım Örneği

DECLARE @UrunAdi VARCHAR(50)
SELECT @UrunAdi = 'Defter' 
SELECT * FROM Urun WHERE UrunAdi = @UrunAdi

🔸 Ön Tanımlı Değişkenler

  1. @@ERROR → Son SQL deyimi hatasız çalıştıysa 0, hata aldıysa 0 dışı bir değer döner.
  2. @@ROWCOUNTINSERT, UPDATE, DELETE gibi işlemlerden sonra etkilenen satır sayısını verir.

🔸 Yazı Yazdırma

PRINT 'Ümit Akpınar'
PRINT @ad
PRINT @@ERROR

🔸 Akış Kontrolleri

✅ CASE Yapısı

SELECT 
    CASE medeniDurum
        WHEN 1 THEN 'Bekar'
        WHEN 2 THEN 'Evli'
        ELSE 'Bilinmiyor'
    END
FROM personeller

✅ IF — ELSE Yapısı

Tek satırlık kullanım:

IF 2 > 5
    PRINT 'Sayı Büyük'

Else bloğuyla birlikte:

IF 2 > 5
    PRINT 'Sayı Büyük'
ELSE
    PRINT 'Sayı Küçük'

✅ WHILE Döngüsü

DECLARE @sayi INT
SET @sayi = 1

WHILE @sayi <= 10
BEGIN
    PRINT @sayi
    SET @sayi = @sayi + 1
END

Döngü içinde BREAK ve CONTINUE komutlarıyla kontrol sağlanabilir.

🔸 Transaction (İşlem Kontrolü)

Veritabanı işlemlerinde bütünlük için BEGIN TRAN, COMMIT, ROLLBACK yapısı kullanılır.

Örnek:

BEGIN TRAN 
    SELECT 2 / 0
    IF(@@ERROR <> 0)
    BEGIN
        ROLLBACK
        RETURN
    END

    UPDATE AccountBalance SET Balance = Balance - 1000 WHERE AccountId = 3
    IF(@@ERROR <> 0)
    BEGIN
        ROLLBACK
        RETURN
    END

    UPDATE AccountBalance SET Balance = Balance + 1000 WHERE AccountId = 2
    IF(@@ERROR <> 0)
    BEGIN
        ROLLBACK
        RETURN
    END
COMMIT

🔸 TRY — CATCH Yapısı

Hata yönetimi için BEGIN TRY ... END TRY ve BEGIN CATCH ... END CATCH blokları kullanılır.

BEGIN TRY	
    SELECT a = 1
    SELECT b = 1/0
    SELECT c = 3
END TRY
BEGIN CATCH
    SELECT 'Hata oluştu' AS hataMesaji
END CATCH

🔸 VIEW Oluşturma ve Kullanma

View Oluşturma:

CREATE VIEW vw_musteriler 
AS
SELECT * FROM AccountBalance

View Çağırma:

SELECT * FROM vw_musteriler

SQL Server’da Procedure (Prosedür) Oluşturma

SQL Server’da Procedure (prosedür), belirli bir işlemi otomatikleştirmek için kullanılan bir SQL komutudur. Prosedürler, genellikle veri manipülasyonu, raporlama, veri validasyonu gibi işlemleri gerçekleştirmek için kullanılır.

🔸 Create Procedure: Yeni bir prosedür oluşturmak için kullanılır.

🔸 Alter Procedure: Var olan bir prosedürü güncellemek için kullanılır.

Örnek: Prosedür Oluşturma

Aşağıda bir prosedür oluşturma örneği yer almaktadır. Bu prosedür, verilen müşteri adı ve soyadına göre Customers tablosundan veri çekmektedir:

CREATE PROCEDURE musteriArama
    @musteriAdi VARCHAR(50),
    @musteriSoyadi VARCHAR(50)
AS
BEGIN
    SELECT * 
    FROM Customers 
    WHERE CustomerName = @musteriAdi AND CustomerSurname = @musteriSoyadi
END

Bu prosedür, musteriAdi ve musteriSoyadi adında iki parametre alır ve Customers tablosunda bu parametreler ile eşleşen verileri döndürür.

Prosedür Çalıştırma

Oluşturduğunuz prosedürü çalıştırmak için EXEC komutunu kullanabilirsiniz. Aşağıda, musteriArama prosedürünü çalıştırmak için kullanılan bir örnek yer almaktadır:

EXEC musteriArama 'Ümit', 'Akpınar'

Yukarıdaki komut, musteriArama prosedürünü çalıştırır ve CustomerName ‘Ömer’ ve CustomerSurname ‘Şen’ olan müşterilerin verilerini döndürür.

Prosedür Güncelleme (ALTER PROCEDURE)

Eğer oluşturduğunuz prosedürde bir değişiklik yapmak isterseniz, ALTER PROCEDURE komutunu kullanabilirsiniz.

Örneğin, prosedürün içine yeni bir parametre eklemek için aşağıdaki gibi güncelleme yapılabilir:

ALTER PROCEDURE musteriArama
    @musteriAdi VARCHAR(50),
    @musteriSoyadi VARCHAR(50),
    @musteriEmail VARCHAR(100) -- Yeni parametre ekledik
AS
BEGIN
    SELECT * 
    FROM Customers 
    WHERE CustomerName = @musteriAdi 
      AND CustomerSurname = @musteriSoyadi
      AND Email = @musteriEmail -- Yeni parametreyi sorguya ekledik
END

Yeni Prosedür Çalıştırma

EXEC musteriArama 'Ümit', 'Akpınar', 'umitakpinarr@icloud.com'

Sonuç

SQL Server’da script yazarken değişkenleri, akış kontrollerini ve hata yönetim yapısını etkin bir şekilde kullanmak; kodlarınızın daha güvenli, okunabilir ve yönetilebilir olmasını sağlar. Yukarıda paylaştığım örnekler, bu temelleri kavramanız için güzel bir başlangıç olacaktır.

admin

Sosyal Medyalarımız