stored procedureyi Query içinde kullanmak?

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
BLuE_ALoNE
Üye
Mesajlar: 47
Kayıt: 26 Eki 2006 08:30

stored procedureyi Query içinde kullanmak?

Mesaj gönderen BLuE_ALoNE »

merhaba arkadaşlar
firebirdde stored procedure kullanmayla alakalı bir sıkıntım var

procedurem şöyle

SET TERM ^ ;

CREATE PROCEDURE PR_CARIBAKIYE(
CARI_ID INTEGER) //input değeri
RETURNS(
BAKIYE FLOAT) //output değeri
AS
DECLARE VARIABLE BORC FLOAT;
DECLARE VARIABLE ALACAK FLOAT;
BEGIN
BORC=0;
ALACAK=0;

SELECT SUM(CHA_MEBLAG) from CARI_HAREKETLER
WHERE CHA_CARI_RECNO=:CARI_ID AND CHA_EVRAK_TIP=0 INTO BORC;

SELECT SUM(CHA_MEBLAG) from CARI_HAREKETLER
WHERE CHA_CARI_RECNO=:CARI_ID AND CHA_EVRAK_TIP=1 INTO ALACAK;

BAKIYE=ALACAK-BORC;

/* Procedure body */
SUSPEND;
END^

SET TERM ; ^

burada cari hareketlerden cari id nolara göre filtre edilip bakiye hesabı yapıyorum
bunu ise View de şöyle kullanmayı düşündüm

SELECT cari_kod,cari_unvan1,
PR_CARIBAKIYE(cari_kod) as BAKIYE
FROM CARI
ORDER BY cari_kod

ama olmuyor bir türlü kullanamadım. şöyle de denedim ama yine olmadı

SELECT cari_kod,cari_unvan1,
BAKIYE=(Select * From PR_CARIBAKIYE(cari_kod)) as BAKIYE
FROM CARI
ORDER BY cari_kod

tek başına procedureyi test ettim yani Select * From PR_CARIBAKIYE(1) şeklinde

o zaman BAKIYE değerini 1 nolu cari için dönderiyor ama benim yapmak istediğim

şöyle bir görüntü

Kodu Ünvanı Bakiye
001 Ömer DOĞAN 1000
002 Deneme Hesap 500
003 Deneme 2 -2500

yardımlarınızı bekliyorum şimdiden çok teşekkür ederim.
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Re: stored procedureyi Query içinde kullanmak?

Mesaj gönderen aLonE CoDeR »

BLuE_ALoNE yazdı: SELECT cari_kod,cari_unvan1,
BAKIYE=(Select * From PR_CARIBAKIYE(cari_kod)) as BAKIYE
FROM CARI
ORDER BY cari_kod
Burada, "BAKIYE=" deklarasyonunu kaldırarak dener misin?

Kolay gele..
BLuE_ALoNE
Üye
Mesajlar: 47
Kayıt: 26 Eki 2006 08:30

Mesaj gönderen BLuE_ALoNE »

olmadı o şekilde de denemiştim
internette de veri tabanından aldığı değerlere göre işlem yapan bir örnek yok hep manual değer verilmiş. fahrettin abinin makalesini bile tamamen inceledim ama orada da yok
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

şu şekilde deneyin;

SELECT cari_Kod from PR_CARIBAKIYE(cari_kod);
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
Bence siz SUSPEND ve FOR SELECT deyimine yoğunlaşın. Ben şimdi tam olarak örnek veremiyorum. Ama işinizin SUSPEND ile FOR SELECT çözüleceğini biliyorum.
Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
Aşağıdaki kod içinde 1,2,3,4,5 verileri olan bir tabloyu

Kod: Tümünü seç

1
2
3
4
5
şeklinde görüntüler ki bu da sizin istediğiniz mantığa örnektir.

Kod: Tümünü seç

SET TERM ^ ;

CREATE PROCEDURE VERIOKU 
RETURNS (
    DEGER INTEGER)
AS
DECLARE VARIABLE RAKAM INTEGER;
begin

   FOR SELECT KAYITNO FROM barkod
      INTO :DEGER
         DO BEGIN
            SUSPEND;
          END


end
^
Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

BLuE_ALoNE yazdı:olmadı o şekilde de denemiştim
Olmayan nedir?Hata mı döndürdü, değer mi döndürmedi?Hata döndürdüyse hata kodu ve açıklaması nedir?Bunun desteklenmemesi ve/veya çalışmaması imkansız :!:
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Editlemiyorum, sorunu net çözümleyelim diye.Parantez içindeki select ifadesinde * kullanmışsın onun yerine bakiye alanını yazmalısın...

Kolay gele..
Kullanıcı avatarı
ofenX
Üye
Mesajlar: 397
Kayıt: 09 Nis 2005 10:24
Konum: Diyarbakır
İletişim:

Mesaj gönderen ofenX »

Merhaba,
Sizinkine yakın bir örnek yapmaya çalıştım. Sanırım sorun alias kullanmamanızda imiş.

Kod: Tümünü seç

SELECT cari_ID,ADISOYADI,
(SELECT BAKIYE FROM
bluecaribakiye(cari_ID))  AS BAKIYE

FROM bluecari
ORDER BY cari_ID
şeklinde bir kod ibexpert te çalışmazken (cari_id yi tanımadığını söylüyor.)
Aşağıdaki kod sorunsuz çalıştı.

Kod: Tümünü seç



SELECT A.cari_ID,A.ADISOYADI,
(SELECT BAKIYE FROM
bluecaribakiye(A.cari_ID))  AS BAKIYE

FROM bluecari A
ORDER BY cari_ID

Kolay gelsin.
http://www.aysbergbilgisayar.com
Logo Go özel eğitim, web tasarım, teknik servis
BLuE_ALoNE
Üye
Mesajlar: 47
Kayıt: 26 Eki 2006 08:30

çok teşekkür ederim

Mesaj gönderen BLuE_ALoNE »

kardeş yardımın için çok teşekkür ederim beni büyük bir sorundan kurtardın. allah razı olsun senden
Cevapla