Sql Server ' da if,case,while yapısı nasıl kullanılır,bu makalemde sizlere bundan bahsediyorum makaleyi sonuna kadar incelemenizi tavsiye ediyorum...
BATCH
Bir batch , bir arada bulunan bir dizi SQL deyimidir. Batch ayıracı GO deyimidir.
SELECT ……
………….
…………
UPDATE …..
…..
GO
……..
DELETE ……
…..
GO
……
…
Özellikleri
1- Bir batch içinde bir deyimde yazım hatası olduğunda tüm batch çalışmaz hale
gelir.
2- Aynı batch içinde bir tablonun yapısı değiştirilip kullanılamaz.
Örnek:
CREATE TABLE urun ………
INSERT urun ……….
GO
Yukarıdaki kod çalışmaz. Çünkü aynı batch içinde tablo oluşturuluyor ve bu tabloya ekleme
yapılmak isteniyor.
CREATE TABLE urun ………
GO
Yukarıdaki kod ise hata vermeden çalışır
SQL Server’da değişken tanımı
Sql server’da değişken isimlerinin başında @ sembolü bulunur.
@ad , @soyad, @tarih değişken isimlerine birer örnektir.
Değişken tanımı için DECLARE deyimi kullanılır.
Genel ifade
DECLARE @isim veritipi
Şeklinde tanımlanır
DECLARE @ad nvarchar(25), @soyad nvarchar(25), @tarih datetime
DECLARE @numara int, @borc Money
@numara =10 şeklinde atama yapılamaz, hata verir.
Atama aşağıdaki gibi yapılır.
SELECT @numara=10
Set @numara=10
@numara =10 şeklinde atama yapılamaz, hata verir.
Atama aşağıdaki gibi yapılır.
SELECT @numara=10
Set @numara=10
SELECT @ad=’ali’, @soyad=’coşkun’ , @borc=50
Yukarıdaki kodda @numara değişkenine 10 rakamı, @ad değişkenine ‘’ali’, @soyad
değişkenine ‘’coşkun’, @borc değişkenine 50 değer atandı.
Örnek:
DECLARE @UrunAdi varchar(30)
SELECT @UrunAdi=’Defter’
SELECT * FROM Urun WHERE UrunAdi=@UrunAdi
Örnek:
DECLARE @PersonelAdi varchar(20)
SELECT @PersonelAdi ='Ahmet'
SELECT * FROM Personel WHERE ad=@PersonelAdi
SQL server’da önceden tanımlı pek çok değişken vardır. Bunlardan iki tanesinden
bahsedelim.
@@error : sql deyimi hata vermeden çalışırsa değeri sıfır, hata verirse sıfırdan farklı bir değer
alır.
@@rowcount : Bir update, delete, insert deyimi çalıştığında, kaç tane kayıdın etkilendiğini
bize bildirir...
Yazı Yazdırma:
Yazı yazdırma PRINT deyimi kullanılır
Örnek:
PRINT 'Mehmet İrfan Erdoğan'
PRINT 5
PRINT 'HATA'
PRINT @numara
Print @@error
Akış kontrol deyimleri
SQL serverdaki akış kontrol deyimleri aşağıdadır
CASE
IF …. ELSE ….
WHILE …..
BREAK
CONTINUE
CASE deyimi
Case deyimi SELECT, UPDATE, DELETE, SET, IN, WHERE , ORDER BY gibi deyimleriniçinde kullanılır.
Sql içinde belirli durumlara göre farklı değerler üretmek istiyorsak CASE deyimi kullanırız.
İki farklı yazım şekli vardır.
Basit CASE yapısı
CASE GirişDenklemi
WHEN değer1 THEN sonuç1
WHEN değer2 THEN sonuç2
….
….
ELSE sonuçn
END
Örnek 1:
CASE medeniDurum
WHEN 1 THEN 'Bekar'
WHEN 2 THEN 'Evli'
ELSE 'Bilinmiyor'
END
Örnek 2:
DECLARE @sayi INT=5
SELECT
CASE @sayi
WHEN 1 THEN 'Zayıf'
WHEN 2 THEN 'Geçer'
WHEN 3 THEN 'Orta'
WHEN 4 THEN 'İyi'
WHEN 5 THEN 'Pekiyi'
ELSE 'Aralık Dışı Değer'
END
Yukarıdaki ifade tek başına yazılmaz, bir SELECT deyimi içine yazılır. medeniDurum değeri
1 ise Bekar, 2 ise Evli , hiç biri değilse else tarafında bulunan bilinmiyor değeri gelir.
İkinci CASE yazımı
CASE
WHEN koşul1 THEN sonuç1
WHEN koşul2 THEN sonuç2
…….
ELSE sonuçn
END
Örnek 1:
CASE
WHEN medeniDurum=1 THEN 'bekar'
WHEN medeniDurum=2 THEN 'evli'
ELSE 'Dul'
END
IF… ELSE… deyimi
Batch içinde koşula bağlı olarak dallanma yapar
IF koşul
Sql deyimi
Koşul doğru ise devamındaki sql deyimi çalışır. Yanlış ise çalışmaz.
IF koşul
Sql deyimi (1)
ELSE
Sql deyimi (2)
Koşul doğru ise 1. sql deyimi, yanlış ise 2. sql deyimi çalışır.
Eğer sql deyimi bir den fazla satır dan oluşursa BEGIN …. END arasında yazılır.
Örnek:
DECLARE @isim varchar(20)
SELECT @isim='irfan'
IF @isim = 'mehmet'
PRINT @isim + ' Coşkun'
WHILE döngüsü
While yapısı bir sql deyiminin tekrarlanmasını sağlar. Koşul yanlış oluncaya kadar döngüçalışır.
BREAK : döngüden koşul sağlanmadan yani erken çıkılmasını sağlar.
CONTINUE : devamındaki satırlar işlenmeden döngünün ilk satırına dönülmesini sağlar.
Genel ifade
WHILE koşul
Sql deyimi
Veya
WHILE koşul
BEGIN
Sql deyimleri
END
Veya
WHILE koşul
BEGIN
Sql deyimi
Koşula bağlı BREAK deyimi
Sql deyimi
Koşula bağlı CONTINUE deyimi
Sql deyimi
END
Örnek:1 den 12 ye kadar sayıları yazdıralım.
DECLARE @sayi int
SELECT @sayi=1
WHILE @sayi<=12
BEGIN
PRINT @sayi
SELECT @sayi = @sayi + 1
END
Örnek : Önceki örnek gibi, 1’den 30 kadar döngüyü çalıştıralım. 1’den 24’e kadar yazdıralım.
25 olunca döngüden çıkalım.
DECLARE @sayi int
SELECT @sayi =1
WHILE @sayi <=30
BEGIN
PRINT @sayi
IF @sayi = 24
BREAK
SELECT @sayi=@sayi+1
END
Örnek : 1 den 30 a kadar yazdıralım. Ancak 15-20 arası yazılmasın.
DECLARE @sayi int
SELECT @sayi=0
WHILE @sayi < 30
BEGIN
SELECT @sayi=@sayi+1
IF @sayi between 15 and 20
continue
PRINT @sayi
END
0 yorum:
Yorum Gönder