34ºc, Sunny
Tuesday, 18th June, 2019
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.
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
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'
DECLARE @UrunAdi VARCHAR(50)
SELECT @UrunAdi = 'Defter'
SELECT * FROM Urun WHERE UrunAdi = @UrunAdi
@@ERROR
→ Son SQL deyimi hatasız çalıştıysa 0
, hata aldıysa 0
dışı bir değer döner.@@ROWCOUNT
→ INSERT
, UPDATE
, DELETE
gibi işlemlerden sonra etkilenen satır sayısını verir.PRINT 'Ümit Akpınar'
PRINT @ad
PRINT @@ERROR
SELECT
CASE medeniDurum
WHEN 1 THEN 'Bekar'
WHEN 2 THEN 'Evli'
ELSE 'Bilinmiyor'
END
FROM personeller
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'
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.
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
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:
CREATE VIEW vw_musteriler
AS
SELECT * FROM AccountBalance
View Çağırma:
SELECT * FROM vw_musteriler
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.
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.
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.
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
EXEC musteriArama 'Ümit', 'Akpınar', 'umitakpinarr@icloud.com'
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