III. SQL DEYİM BLOKLARI
Bu dosya bir zamanlar serkanavci.net te yayınlanmıştır.
KATEGORİ: 3- SQL DERS NOTLARI
20
Şub
2009
I. SQL DEYİM BLOKLARI
SQL deyimlerini işletirden bir grup deyimi bir arada işletmek gerekebilir. Bu olanak deyim bloklarıyla yapılır. Diğer bir olanak da IF, CASE ve WHILE gibi hem blok olarak hem de blok olmadan işletilecek deyimleri belli koşullara bağlamaktır.
A. BEGIN…END
BEGIN ve END deyimleri bir grup SQL deyimini bir blok içinde toplamayı sağlar.
Örneğin IF deyimi ile yalnızca bir deyimin işletilip işletilmemesi sınanırken, BEGIN ve END bloğu ile bir grup deyimin çalıştırılıp çalıştırılmaması sağlanır.
Örnek:
WHILE (SELECT AVG(adet) FROM titles) < 30
– döngü başlat
BEGIN
UPDATE siparis
SET adet= adet* 2
END
BEGIN ve END deyimleri genellikle şu durumlarda kullanılır.
• WHILE ile döngü yapıldığında.
• Bir CASE fonksiyonunun blok deyimi içermesi durumunda.
• IF ve ELSE deyiminde.
B. DENETİM DEYİMLERİ
SQL dilinde programlama dilleri kadar olmasa da program akışını kontrol etmek için deyimler ve yapılar vardır. Bunların başında IF-ELSE, CASE ve WHILE yapısı gelir.
IF…ELSE
Bir deyimin işletilmesini belli bir koşula bağlar.
Kullanımı:
IF ifade
{ deyim }
[ ELSE
{ deyim} ]
Örnek:
Adet ortalamasının 20′den küçük olması durumunda çalıştırılacak deyimler:
IF (SELECT AVG(adet) FROM siparis) < 20
BEGIN
–işlemler
END
ELSE
BEGIN
–işlemler
END
CASE
Bir değere göre daha fazla alternatifi yerine getirmeyi sağlar.
Kullanım biçimi:
CASE değer
WHEN değer THEN işlem
WHEN değer THEN işlem
ELSE işlem
END
Tablodan Aktarma:
INSERT INTO yenitablo (alanlar..)
SELECT (alan1, alan2, alan3,
CASE alan4 WHEN ‘A’ THEN ’1′ WHEN ‘B’ THEN ’2′ ELSE ’3′ END,
alan5 FROM eskitablo
WHERE isdate (tarih) <> 0
Örnek:
Tablolar arasında aktama:
İNSERT İNTO KAMİL1
(KODU, ADİ, GRUBU, ADRESİ)
SELECT KODU, ADİ,
(CASE GRUBU WHEN ‘A’ THEN ‘EMEKLI’ WHEN ‘B’ THEN ‘TERHIS’ END)
,ADRESİ FROM KAMİL2
WHILE
SQL deyimlerinin döngü içinde yinelenmesini sağlar. WHILE ile belirtilen döngü koşulu yerine getirildiği sürece deyimler yerine getirilir.
Kullanımı:
WHILE ifade
{ deyim ya da blok}
[ BREAK ]
{ deyim ya da blok}
[ CONTINUE ]
Örnek: Satış adetleri 50 oluncaya kadar adet alanının artır.
WHILE (SELECT AVG(adet) FROM siparis) < 50
BEGIN
UPDATE siparis
SET adet= adet* 2
SELECT MAX(adet) FROM siparis
IF (SELECT MAX(adet) FROM siparis) > 50
BREAK
ELSE
CONTINUE
END
PRINT ‘adet değeri büyük”‘
BREAK ve CONTINUE kullanmadan:
WHILE (SELECT AVG(adet) FROM siparis) < 50
BEGIN
UPDATE siparis
SET adet= adet* 2
END
PRINT ‘adet değeri büyük”‘

Son Yorumlar