SQL Server’da Karar İfadeleri ve Döngü Kullanımı

SQL Server’da Karar İfadeleri ve Döngü Kullanımı

Karar ifadelerini Java, C#  vb. yerlerde code behind tarafında kolaylıkla kullanabilmekteyiz. MsSql tarafında kullanımına bakarak ilerde doğabilecek SP (store prodecure) , View veya bir query ile çıktı sonucunun kontrolunu sağlamamıza yardımcı olacaktır.
T-SQL komutlarında bazen bir ifadeyi bir koşula dayandırarak çalıştırma ihtiyacı duyabiliriz. Bu durumlarda karar ifadeleri ve döngüler yardımımıza koşar. Karar ifadeleri ve döngüler yardımıyla belli bir ifadeyi belli bir sayıda veya belli bir koşul gerçekleşinceye kadar çalıştırabiliriz. Peki bunlar nelerdir, kısaca inceleyelim.

IF-ELSE

Karar ifadelerinin en basiti ve en çok kullanılanıdır. IF komutunu izleyen boolean ifade TRUE olursa takip eden ifadeler, FALSE olursa ELSE komutundan sonra gelen ifadeleri gerçekleştirecektir. IF kullanımında iç içe IF blokları da kullanabiliriz.
Bir örnekle inceleyelim. Bu arada deneme için Northwind database 'ini kullanacağım.


IF EXISTS


Bu komut ile de bir kaydın var olup olmadığını sorgularız. Daha çok database’de bir objenin var olup olmadığını sorgulamak istediğimiz zaman kullandığımız bir komuttur. Bu karar ifadesi ile  Sanal tablo kontrolu ve daha bir çok kontrolde yapılabilir.



CASE


Birden çok boolean deyimlerini karşılaştırmalı olarak tek bir ifade içinde belirtmemize olanak tanır. Select, update gibi ifadeler ile birlikte kullanılır. CASE ifadesi komut değil bir işlev olduğu için IF komutunda olduğu gibi tek başına kullanılmaz.
WHİLE


C# da yazılım yaparken kullanılan Foreach döngüsünün SQL Server’daki karşılığı WHILE döngüsü diyebiliriz. İfadelerin belli bir koşul gerçekleşinceye kadar çalışmasını sağlar. Döngü ancak ilgili koşulun TRUE veya FALSE olması ile birlikte durdurulabilir. Eğer şart belirlenmeden bir WHILE döngüsü oluşturulursa döngü sonsuz döngü olur.
IF kullanımında iç içe IF blokları kullanabildiğimiz gibi, WHILE döngüsü içinde de bir WHILE döngüsü oluşturabiliriz. Bunu yapabildiğimiz gibi WHILE döngüsü içinde de IF blokları oluşturabilir ya da tam tersi IF blokları içinde de WHILE döngüleri oluşturabiliriz.
İlk örneğimizde 1’den 10’a kadar sayıları WHILE döngüsü ile ekrana yazdıralım.

CURSOR KULLANIMI


SQL Server’da bir sorgu sonucu dönen kayıtlar üzerinde satır bazlı işlem yapmak için CURSOR kullanırız. CURSOR hangi satır üzerinde ise o satırda bulunan veriler ile işlem yapılır. CURSOR kullandığımız Select cümlesinde dönen her kayıt bir değişkene atanmalıdır. Select cümlesinden hangi veri tipinde ne kadar kayıt dönecek ise o kayıt sayısı kadar aynı veri tiplerinde değişkenler tanımlanır.
CURSOR kayıtlar üzerinde dolaşmaya başlamadan önce Open komutu ile açılır, Fetch Next komutu ile kayıtlar üzerinde ilerlenir, kayıtlar ile ilgili işlemler bittikten sonra ise Close komutu ile kapatılır.
Bir örnek ile inceleyelim.
declare @ProductName nvarchar(150)
declare @CategoryId nvarchar(150)


declare writerLoop cursor for

select p.ProductName,p.CategoryID
from Products p with(nolock) where ProductID=7 

open writerLoop 

fetch next from writerLoop into  @ProductName,@CategoryId

while @@FETCH_STATUS =0
begin 

select (@ProductName) as ProductName

select CategoryName from Categories where CategoryID=@CategoryId


fetch next from writerLoop into @ProductName,@CategoryId

end 

close writerLoop
Deallocate writerLoop











Hiç yorum yok:

Yorum Gönder