Sql Cümlelerinde If-ElseIf Yapısı

20 03 2007

ilgili yazının güncel hali için lütfen

http://www.sadullahkeles.com/2007/03/20/sql-cumlelerinde-if-elseif-yapisi/

adresini ziyaret ediniz..

If-EndIf bloğu her programlama dilinde vardır. belli durumlara göre farklı işlemler yaptırmak amaçlı kullanılır. Sql cümlelerinde de diğerlerine benzer bir kullanımı vardır.

if(mantıksal ifade)

begin

// şartın doğru olması durumunda yapılacak işlemler

end

else //else yerine else if (şart) şeklinde kontrol cümleleri artırılabilir.

begin

//diğer dumunda yapılacak işlemler

end

Örnek Kullanım :

if(1=2) print ‘sadullah’
else if(2<1) print ‘Keleş’
else print ‘olmadı’

şeklinde bir kullanımda şartlar yanlış olduğu için son else bloğu çalışır ve ekrana “olmadı” yazar.

Örnek Kullanım 2:

ifexists(select Il_kodu from yeniiller where Il_kodu = 82)

update yeniiller set Il_text =‘ilimin değişmiş hali’where Il_kodu = 82

else

insertinto yeniiller(Il_kodu, Il_text)values(’82’,‘benim yeni ilim’)

bu kullanımda da talbomuzda 82 numaralı ilin olup olmadığını kontrol ediyoruz. eğer böyle bir il yoksa yeni bir bilgi girişi yaparak 82 numaralı ili tablomuza ekliyoruz. eğer 82 numaralı il varsa var olan kayıt üzerinde güncelleme yapıyoruz 


İşlemler

Information

4 responses

28 01 2010
Sedat Kumcu

Bu güzel yazı için teşekkürler. İyi çalışmalar.

1 03 2012
Asu

ALTER Proc [dbo].[OdaOzellikSP]
@ResepsiyonMdlBasTrh datetime,
@ResepsiyonMdlBitTrh datetime
as
if (
(((r.Rzv_Start IS NOT NULL and r.Rzv_End IS NOT NULL) or
(s.Sts_Start IS NOT NULL and s.Sts_End IS NOT NULL))
and
(((r.Rzv_Start< @ResepsiyonMdlBasTrh and r.Rzv_End< @ResepsiyonMdlBasTrh)or
(s.Sts_Start< @ResepsiyonMdlBasTrh and s.Sts_End @ResepsiyonMdlBitTrh and r.Rzv_End> @ResepsiyonMdlBitTrh)or
(s.Sts_Start> @ResepsiyonMdlBitTrh and s.Sts_End> @ResepsiyonMdlBitTrh))))
or
((r.Rzv_Start IS NULL and r.Rzv_End IS NULL) and
(s.Sts_Start IS NULL and s.Sts_End IS NULL))
)
begin
SELECT o.Id,o.Numara,’boş’ as Durum,null as Rzv_Start,null as Rzv_End,null as Sts_Start,null as Sts_End
FROM dbo.Rezervasyon AS r RIGHT OUTER JOIN
dbo.Oda AS o ON o.Id = r.Oda_Id LEFT OUTER JOIN
dbo.Satis AS s ON s.Oda_Id = o.Id
end
else
begin
SELECT o.Id,o.Numara,’dolu’ as Durum,r.Rzv_Start,r.Rzv_End,s.Sts_Start,s.Sts_End
FROM dbo.Rezervasyon AS r RIGHT OUTER JOIN
dbo.Oda AS o ON o.Id = r.Oda_Id LEFT OUTER JOIN
dbo.Satis AS s ON s.Oda_Id = o.Id
end

Böyle bir SP oluşturdum fakat if koşulunun içinde kolon adlarımı tanımıyor. İnternette okumadığım sayfa kalmadı ama buna benzer tablodan alınan kolon ile bir örnek bulamadım. Bunu case yapısıyla denedim ama işim çok uzadı o şekilde. En kısa zamanda cevabınızı bekliyorum..

1 03 2012
Asu

ALTER Proc [dbo].[OdaOzellikSP]
@ResepsiyonMdlBasTrh datetime,
@ResepsiyonMdlBitTrh datetime
as
if(exists(SELECT o.Id,o.Numara,r.Rzv_Start,r.Rzv_End,s.Sts_Start,s.Sts_End
FROM dbo.Rezervasyon AS r RIGHT OUTER JOIN
dbo.Oda AS o ON o.Id = r.Oda_Id LEFT OUTER JOIN
dbo.Satis AS s ON s.Oda_Id = o.Id
WHERE(((r.Rzv_Start IS NOT NULL and r.Rzv_End IS NOT NULL) or
(s.Sts_Start IS NOT NULL and s.Sts_End IS NOT NULL))
and
(((r.Rzv_Start< @ResepsiyonMdlBasTrh and r.Rzv_End< @ResepsiyonMdlBasTrh)or
(s.Sts_Start< @ResepsiyonMdlBasTrh and s.Sts_End @ResepsiyonMdlBitTrh and r.Rzv_End> @ResepsiyonMdlBitTrh)or
(s.Sts_Start> @ResepsiyonMdlBitTrh and s.Sts_End> @ResepsiyonMdlBitTrh))))
or
((r.Rzv_Start IS NULL and r.Rzv_End IS NULL) and
(s.Sts_Start IS NULL and s.Sts_End IS NULL))
))
begin
SELECT o.Id,o.Numara,’boş’ as Durum,null as Rzv_Start,null as Rzv_End,null as Sts_Start,null as Sts_End
FROM dbo.Rezervasyon AS r RIGHT OUTER JOIN
dbo.Oda AS o ON o.Id = r.Oda_Id LEFT OUTER JOIN
dbo.Satis AS s ON s.Oda_Id = o.Id
end
else
begin
SELECT o.Id,o.Numara,’dolu’ as Durum,r.Rzv_Start,r.Rzv_End,s.Sts_Start,s.Sts_End
FROM dbo.Rezervasyon AS r RIGHT OUTER JOIN
dbo.Oda AS o ON o.Id = r.Oda_Id LEFT OUTER JOIN
dbo.Satis AS s ON s.Oda_Id = o.Id
end

Böyle yapınca oldu sanırım, şu an koşulumda mantık hatası olduğu için istediğim sonucu alamıyorum galiba. Yine de bu yaptığım doğru değilse cevabınızı bekliyorum🙂

11 09 2012
Sql de Case-When Yapısı « Sadullah KELEŞ

[…] de Case-When Yapısı 14 12 2007 ilgili yazının güncel hali için lütfen http://www.sadullahkeles.com/2007/03/20/sql-cumlelerinde-if-elseif-yapisi/ adresini ziyaret […]

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s




%d blogcu bunu beğendi: