Storage Procedure ile hesaplama işlemi

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
SieS
Üye
Mesajlar: 166
Kayıt: 17 Haz 2003 10:41
Konum: Konya

Storage Procedure ile hesaplama işlemi

Mesaj gönderen SieS »

Merhaba kadrolu acemiden bir soru daha :oops:

Musteri tablomda müşteriye ait bilgiler var bunlar teknik bilgi ve bu bilgilerden faydalanarak müşterininin ihtiyacı olan hammadeyi hesaplayacağım. Kısaca şöyle
MUSTERI TABLOMUN ALANLARI
MUSTERI_KOD,
M_1_ADI,
M_1_EN,
M_1_BOY
M_2_ADI,
M_2_EN,
M_2_BOY
M_3_ADI,
M_3_EN,
M_3_BOY

NORMAL KOD İLE ŞU ŞEKİLDE YAPIYORUM AMA SP DE NASIL OLUR ONU BİLMEDİĞİMDEN SİZLERDEN YARDIM İSTİYORUM
//*********
VAR SONUC1,SONUC2,SONUC3:REAL;
BEGIN
IF M_1_ADI > ' ' THEN SONUC1 := M_1_EN * M_1_BOY * 1,05
ELSE SONUC1 := 0;
IF M_2_ADI > ' ' THEN SONUC2 := M_2_EN * M_2_BOY * 1,05
ELSE SONUC2 := 0;
IF M_3_ADI > ' ' THEN SONUC3 := M_3_EN * M_3_BOY * 1,05
ELSE SONUC3:=0;

bu işlemlerden sonra
M_1_ADI, SONUC1, M_2_ADI,SONUC2,M_3_ADI,SONUC3
DEĞERLERI DÖNECEK.....
END;
//***************

Şimdiden herkese teşekkür ederim.
Kolay gelsin
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,

Öncelikle Balık nasıl tutulur şeklinde cevap vereceğimi söyleyip, sana sadece Interbase/Firebird üzerinde bir Örnek SP hazırladım buna bakarak ne yapman gerektiğini çözebilirsin :)

Kod Örneği aşağıda, sorun olursa çekinmeden sorabilirsin, bilmemek değil öğrenmemek ayıp demişler....

Kod: Tümünü seç

SET TERM ^^ ;
CREATE PROCEDURE SP_DENEME (VAR_GELEN_1 INTEGER, VAR_GELEN_2 CHAR(20))
       RETURNS (RET_DONEN_1 Float, RET_DONEN_2 Char(30))
AS
DECLARE VARIABLE INT_TANIMLANAN_1 INTEGER ;
DECLARE VARIABLE STR_TANIMLANAN_2 CHAR(30) ;
BEGIN
  IF (VAR_GELEN_1 = 0) THEN
  BEGIN
    RET_DONEN_1 = 0 ;
  END
  ELSE IF (VAR_GELEN_1 < 0) THEN
  BEGIN
    RET_DONEN_1 = -1 ;
  END
  ELSE
  BEGIN
    RET_DONEN_1 = 1 ;
  END

  IF (VAR_GELEN_2 = '') THEN
  BEGIN
    RET_DONEN_2 = 'STRING BOŞ GELDİ' ;
  END
  ELSE
  BEGIN
    RET_DONEN_2 = 'STRING : '||VAR_GELEN_2 ;
  END
END
^^
SET TERM ; ^^
Kolay Gelsin
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
SieS
Üye
Mesajlar: 166
Kayıt: 17 Haz 2003 10:41
Konum: Konya

Mesaj gönderen SieS »

İlginize teşekkür ederim.
Fakat verdiğiniz örneği pek çözemedim üsteki sorumda örnek olması için bir tablo oluşturdum benim amacım mevcut bir tablo üzerindeki verileri kullanarak hesaplama yapıp değer döndermek sizin veridğiniz örnekge gönderdiğim parametrede işlem yapılıyor gibi.
ben sadece müşteri kodunu göndereceğim ve o müşteriye ait bazı verileri kullanarak bir değer isteyeceğim.
Bilmem anlatabildimmi. Aslında SP olayını tam bilmediğim için soru şeklimde yanlış olabilir bağışlayın.
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,

Anladım :)
1. sorunun yanıtı aslında daha önceden yanıtlandığı için forumda aratırsan bulacaksın. (Arama yaparken SP, TRIGGER, SUSPEND kelimlerini aratabilirsin, önceden verilen yanıtları görebilirsin.)
2. Makalelerde SP'ler hakkında Fahrettin bey'in büyük emekleriyle hazırlanmış stored procedure ve triggerlar hakkında örneklerle makaleler var. Oraya göz atabilirsiniz.
3. Interbase dokumanlarında FOR SELECT DO ve SUSPEND komutlarına da göz atabilirsin.

Sanırım bu şekilde çözüme ulaşabilirsiniz.

Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
SieS
Üye
Mesajlar: 166
Kayıt: 17 Haz 2003 10:41
Konum: Konya

Mesaj gönderen SieS »

Çok teşekkür ederim fahrettin beyin makalesinde istediğim şeyler var.
Hepinizden allah razı olsun.
Hakkınızı helal edin.
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 »

Ne demek :) Hepimizden razı olsun.

Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Cevapla