Firebird : Karar ve Döngü Yapısı
#1
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:

SQL
  1. SELECT
  2. OGR_NO,
  3. OGR_NOTU,
  4. CASE OGR_NOTU
  5. /* Yalnızca OGR_NOTU belli değerlere eşit olursa */
  6. WHEN 0 THEN 'Sıfır'
  7. WHEN 50 THEN 'Elli'
  8. WHEN 75 THEN 'Yetmiş beş'
  9. WHEN 100 THEN 'Yüz'
  10. ELSE 'Hata'
  11. END
  12. AS
  13. /* Değerlendirme, “DURUMU”
  14.   sütunu eklenerek gösteriliyor. */
  15. DURUMU
  16. FROM
  17. OGRENCI_LISTESI;



Örnek Kullanım 2:

SQL
  1. SELECT
  2. OGR_NO,
  3. OGR_NOTU,
  4. CASE
  5. /* Operatör kullanımı gerektiğinde */
  6. WHEN OGR_NOTU < 30 THEN 'Çok kötü'
  7. WHEN OGR_NOTU = 50 THEN 'Geçer'
  8. WHEN OGR_NOTU = 75 THEN 'Daha iyi olabilir'
  9. WHEN OGR_NOTU > 75 THEN 'Aferin'
  10. ELSE 'Hata'
  11. END
  12. AS
  13. /* Değerlendirme, “DURUMU”
  14.   sütunu eklenerek gösteriliyor. */
  15. DURUMU
  16. FROM
  17. 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
  1. SELECT OGRENCI_NO, OGR_NOTU,
  2. IIF (OGR_NOTU > 50, &#8216;Geçti&#8217;, &#8216;Kaldı&#8217;) AS DURUMU
  3. FROM OGRENCI_LISTESI;



c - ) IF Karar Yapısı (Dynamic SQL):

Stored Precedure içinde kullanabilirsiniz.
(Stored Procedure konusunda örnek olacak.)

Syntax:

SQL
  1. IF (Koşul = Ölçü) THEN
  2. BEGIN
  3. /* Yapılması gereken. (Bir değişken de kullanabilirsiniz.)
  4. Sorgudan dönen her kayıt bu BEGIN-END bloğu arasında işlem görecektir. */
  5. END
  6. ELSE IF (Koşul = Ölçü) THEN
  7. BEGIN
  8. /* ..*/
  9. END
  10. ELSE
  11. BEGIN
  12. /* ..*/
  13. 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
  1. WHILE (sayac < 100) DO
  2. BEGIN
  3. /* Yapılacak işler.
  4.   sayac, 100’den küçük olduğu sürece
  5.   döngü işlem yapacaktır. */
  6. sayac = sayac + 1 ;
  7. 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
  1. FOR
  2. SELECT Alan1, Alan2 FROM TABLO1
  3. INTO :Atanan_Alan1, :Atanan_Alan2
  4. DO
  5. BEGIN
  6. /* Yapılacak işler */
  7. 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.



  Alıntı
Bu mesajı beğenenler:


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  Firebird Store procedure le Bul ve Değiştir AhmetNuri 2 3.309 26-06-2022, 00:20
Son Mesaj: Zeki Gürsoy
  Firebird : Kurulum ve Connection Zeki Gürsoy 9 16.018 21-04-2021, 15:13
Son Mesaj: sarsak
access-sql-14 Firebird : Yürüyen Bakiye Uygulaması Zeki Gürsoy 16 14.845 12-08-2015, 14:12
Son Mesaj: akuyumcu63
  Firebird Aynı Kayıtları bul ve sil AhmetNuri 0 3.196 12-10-2012, 20:52
Son Mesaj: AhmetNuri
  firebird ile listelenmiş verinin kaynak tablosunu değiştirme yardım! muratxx5 1 2.704 21-05-2012, 00:05
Son Mesaj: Zeki Gürsoy
  Firebird otmatik loglama (Trigger Level Loging) AhmetNuri 6 8.633 26-03-2012, 01:31
Son Mesaj: Zeki Gürsoy
  Firebird Veritabanında olan procedure lar nasıl gizlenir softdestek 8 6.730 19-03-2012, 21:40
Son Mesaj: softdestek
  Firebird : DateDiff (Excel ETARİHLİ fonk. birebir kopyası) Zeki Gürsoy 0 4.261 21-02-2012, 02:58
Son Mesaj: Zeki Gürsoy

Foruma Git:


Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi