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.
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.
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.
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.
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
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