StoredProcedure for, while, if kullanımı

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
hakkus
Üye
Mesajlar: 160
Kayıt: 18 Haz 2003 12:02
Konum: Konya

StoredProcedure for, while, if kullanımı

Mesaj gönderen hakkus »

Merhabalar,
Database olarak firebird kullanıyorum. Delphi de yazdığım bir fonksiyonu storedProcedure'a dönüştürmeye çalışıyorum.
StoredProcedure' da for, while, if kullanımına ilişkin örnek verebilirmisiniz.
Bulduğum örnekler oracle ilişkin bir türlü çeviremedim.
Kısaca yapmak istediğim tablodan Puan'ı 0 dan büyük olanları seçecek, örneğin EksPuan olarak gönderdiğim değeri EksPuan 0 olana kadar Puanlardan düşecek. Düşen puan kadar da EksPuan azalacak.
Not: Biliyorum kod istemem doğru değil ama küçük bir ipucu da yeterli olabilir.
Saygıyla
saygılar
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

hocam Fahrettin abinin bu konuda çok geniş ve güzel bir makalesi var. Sitede veritabanı bölümünde var.

Kolay gelsin.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

Estagfirullah...
viewtopic.php?t=644 linki altindaki makalede Admin'in de dediği gibi bazı stored procedure ornekleri var... Bu arada bir ara o makaleye beir kac farkli stored procedure ornegi daha eklemekte fayda olabilir dediginiz gibi dongu orneklerini iceren...
Interbase ile dongu iceren hic stored procedure yazmadim. Makalede if icin ornekler var. Fakat bir baska veritabanı icin olan kodları uyarlamak interbase icin pek uymayacaktir. Firebird kullanmadigim icin belki ilave komutları olabilir. Interbase'in SQL Reference'e bakinca orada bir dogu komutu olmadigini gordum... Belki procedure'un kendini cagirmasi lie birseyler yaplabilir. Ya da firebird'e ilgili komutlar olabilir. Firebird 'un SQL reference'ine bakarak bunu ogrenebilirsiniz...
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Genelde örneklerde falan doğru dürüst bir şekilde ben de bulamamıştım ama biraz yırtınıp başarmıştım :)

Bazı SQL kullanımları IB ve FB'de DSQL'de filan kullanılıyor (örneğin CURSOR) olayı gibi.

Aşağıda nasıl kullanabileceğinize dair code örnekleri var onlardan faydalanabilirsiniz.


Örnek1 :

Kod: Tümünü seç

  FOR SELECT ALAN1, ALAN2 FROM TABLO1 WHERE ALAN3 = 5 INTO :INT_ALAN1, :STR_ALAN2 DO
  BEGIN
  
  END
Bu örnekte TABLO1'deki ALAN1 (Integer), ALAN2 (String) fieldları ALAN3'ün 5'e eşit olduğu kayıtları Döngü içerisinde select ediliyor. Bildiğimiz For...Next gibi çalışmıyor. :INT_ALAN1 ve :STR_ALAN2 ise Procedure içinde tanımlanmış bellek değişkenleri.

Örnek2 :

Kod: Tümünü seç


  WHILE (INT_SAYAC < 100) DO
  BEGIN
    .
    .
    .     
    INT_SAYAC = INT_SAYAC + 1 ;
  END

Bu örnekte ise While döngüsü kurulup, INT_SAYAC değişkeni 100'den küçük olduğunca dönmesi sağlanıyor.

IF için ise

Kod: Tümünü seç

    IF (INT_DEGISKEN = 1) THEN
      INT_DEGISKEN = 0 ;
    .
    .
    .
    IF (STR_DEGISKEN IS NULL) THEN
      STR_DEGISKEN = 'ADNAN' ;
    .
    .
    .
    IF (DBL_DEGISKEN > 1000 ) THEN
    BEGIN
      DBL_DEGISKEN = DBL_DEGISKEN / 2 ;
      DBL_DEGISKEN = DBL_DEGISKEN + 1 ;
    END
    .
    .
    .
    IF (INT_DEGISKEN > 0 ) THEN
    BEGIN
      DBL_DEGISKEN = DBL_DEGISKEN / 2 ;
      DBL_DEGISKEN = DBL_DEGISKEN + 1 ;
    END
    ELSE IF (INT_DEGISKEN > 0 ) THEN 
    BEGIN

    END 

gibi gibi kullanılıyor.

Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
safak
Şafak EBESEK
Mesajlar: 165
Kayıt: 05 Ağu 2003 04:39
Konum: Istanbul
İletişim:

Mesaj gönderen safak »

Cevapla