14-03-2008, 14:37
1- ) KARAR YAPILARI:
a - ) CASE…END Karar Yapısı (Standart SQL):
İki tür kullanım şekli vardır. Örnekler ile açıklamaya çalışayım.
“OGRENCI_LISTESİ” tablosu olduğunu, bu tablonun “OGRENCI_NO” ve “OGR_NOTU” sütunları
olduğunu varsayalım.
Örnek Kullanım 1:
Örnek Kullanım 2:
b - ) IIF Karar Yapısı (Standart SQL):
Kullanımı, VB’de bildiğimiz IIf gibidir.
Syntax:
IIF (<Koşul>, <Doğruysa>, <Yanlışsa>)
Örnek:
Yukarıdaki tabloya göre geçme ve kalma durumu tespit edilsin.
c - ) IF Karar Yapısı (Dynamic SQL):
Stored Precedure içinde kullanabilirsiniz.
(Stored Procedure konusunda örnek olacak.)
Syntax:
2 - ) DÖNGÜLER:
Stored Procedure içinde kullanılırlar.
SQL döngülerinin performansı, VB döngülerinin performansından farklıdır.
Anlık zaman içinde çok büyük işler yaparlar.
a - ) WHILE DO Döngü Yapısı (Dynamic SQL):
Seçme sorgusunda kullanmak istediğinizde CURSOR tanımlayıp FETCH yapmanız gerekir.
Syntax:
b - ) FOR DO Döngü Yapısı (Dynamic SQL):
Kullanımı en kolay ve yaygın olan döngüdür. Çalışma prensibini For Each döngüsüne benzetebiliriz.
Yani, SELECT sorgusundan dönen kayıt kümesi BEGIN-END bloğu arasında tek tek değerlendirilir.
Syntax:
INTO ??
SELECT ifadesindeki Alan1 ve Alan2 ya aynı isimle ya da farklı bir isimle değişkenlere atanır.
Alan sayıları eşit olmalıdır.
a - ) CASE…END Karar Yapısı (Standart SQL):
İki tür kullanım şekli vardır. Örnekler ile açıklamaya çalışayım.
“OGRENCI_LISTESİ” tablosu olduğunu, bu tablonun “OGRENCI_NO” ve “OGR_NOTU” sütunları
olduğunu varsayalım.
Örnek Kullanım 1:
SQL
- SELECT
- OGR_NO,
- OGR_NOTU,
- CASE OGR_NOTU
- /* Yalnızca OGR_NOTU belli değerlere eşit olursa */
- WHEN 0 THEN 'Sıfır'
- WHEN 50 THEN 'Elli'
- WHEN 75 THEN 'Yetmiş beş'
- WHEN 100 THEN 'Yüz'
- ELSE 'Hata'
- END
- AS
- /* Değerlendirme, “DURUMU”
- sütunu eklenerek gösteriliyor. */
- DURUMU
- FROM
- OGRENCI_LISTESI;
Örnek Kullanım 2:
SQL
- SELECT
- OGR_NO,
- OGR_NOTU,
- CASE
- /* Operatör kullanımı gerektiğinde */
- WHEN OGR_NOTU < 30 THEN 'Çok kötü'
- WHEN OGR_NOTU = 50 THEN 'Geçer'
- WHEN OGR_NOTU = 75 THEN 'Daha iyi olabilir'
- WHEN OGR_NOTU > 75 THEN 'Aferin'
- ELSE 'Hata'
- END
- AS
- /* Değerlendirme, “DURUMU”
- sütunu eklenerek gösteriliyor. */
- DURUMU
- FROM
- OGRENCI_LISTESI;
b - ) IIF Karar Yapısı (Standart SQL):
Kullanımı, VB’de bildiğimiz IIf gibidir.
Syntax:
IIF (<Koşul>, <Doğruysa>, <Yanlışsa>)
Örnek:
Yukarıdaki tabloya göre geçme ve kalma durumu tespit edilsin.
SQL
- SELECT OGRENCI_NO, OGR_NOTU,
- IIF (OGR_NOTU > 50, ‘Geçti’, ‘Kaldı’) AS DURUMU
- FROM OGRENCI_LISTESI;
c - ) IF Karar Yapısı (Dynamic SQL):
Stored Precedure içinde kullanabilirsiniz.
(Stored Procedure konusunda örnek olacak.)
Syntax:
SQL
- IF (Koşul = Ölçü) THEN
- BEGIN
- /* Yapılması gereken. (Bir değişken de kullanabilirsiniz.)
- Sorgudan dönen her kayıt bu BEGIN-END bloğu arasında işlem görecektir. */
- END
- ELSE IF (Koşul = Ölçü) THEN
- BEGIN
- /* ..*/
- END
- ELSE
- BEGIN
- /* ..*/
- END
2 - ) DÖNGÜLER:
Stored Procedure içinde kullanılırlar.
SQL döngülerinin performansı, VB döngülerinin performansından farklıdır.
Anlık zaman içinde çok büyük işler yaparlar.
a - ) WHILE DO Döngü Yapısı (Dynamic SQL):
Seçme sorgusunda kullanmak istediğinizde CURSOR tanımlayıp FETCH yapmanız gerekir.
Syntax:
SQL
- WHILE (sayac < 100) DO
- BEGIN
- /* Yapılacak işler.
- sayac, 100’den küçük olduğu sürece
- döngü işlem yapacaktır. */
- sayac = sayac + 1 ;
- END
b - ) FOR DO Döngü Yapısı (Dynamic SQL):
Kullanımı en kolay ve yaygın olan döngüdür. Çalışma prensibini For Each döngüsüne benzetebiliriz.
Yani, SELECT sorgusundan dönen kayıt kümesi BEGIN-END bloğu arasında tek tek değerlendirilir.
Syntax:
SQL
- FOR
- SELECT Alan1, Alan2 FROM TABLO1
- INTO :Atanan_Alan1, :Atanan_Alan2
- DO
- BEGIN
- /* Yapılacak işler */
- END
INTO ??
SELECT ifadesindeki Alan1 ve Alan2 ya aynı isimle ya da farklı bir isimle değişkenlere atanır.
Alan sayıları eşit olmalıdır.
