multiple rows in singleton select

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
andronoid
Üye
Mesajlar: 35
Kayıt: 26 Tem 2004 06:44

multiple rows in singleton select

Mesaj gönderen andronoid »

slm. arkadaşlar aşağıdaki procedure ile kasa hareketleri tablomdan iki tarih arasındaki kayıtlar ve iki cari kodu arasındaki kayıtları birlikte çekmek istiyorum (01.01.2005-18.01.2005 arasındaki cari kodu 1-5 arasındaki kayıtlar gibi) fakat multiple rows hatası veriyor. Hatanın nedenini anladım. Ama uygun kayıtları alacak procedure yazmayı başaramadım. Nasıl yapabilirim? Hangi yolu takip etmeliyim? (vt: fb 1.5)

İyi çalışmalar.

Kod: Tümünü seç

CREATE PROCEDURE SP_ZRP_KASAHAR (
    KODU1 INTEGER,
    KODU2 INTEGER,
    TARIH1 DATE,
    TARIH2 DATE,
    TURKODU1 INTEGER,
    TURKODU2 INTEGER,
    DURUM1 SMALLINT,
    CARIKODU1 INTEGER,
    CARIKODU2 INTEGER)
RETURNS (
    KODU INTEGER,
    TARIH DATE,
    TURKODU INTEGER,
    TURU VARCHAR(25),
    DURUM SMALLINT,
    CARIKODU INTEGER,
    CARIADI VARCHAR(50),
    TUTAR NUMERIC(18,2))
AS
begin
 select kodu,tarih,turkodu,turu,durum,carikodu,cariadi,tutar from kasahar where
    (((kodu >= :kodu1) AND (kodu <= :kodu2)) AND
    ((tarih >= :tarih1) AND (tarih <= :tarih2)) AND
    ((turkodu >= :turkodu1) AND (turkodu <= :turkodu2)) AND
    (durum = :durum1) AND
    ((carikodu >= :carikodu1) AND (carikodu <= :carikodu2)))
    into :kodu,:tarih,:turkodu,:turu,:durum,:carikodu,:cariadi,:tutar;
   suspend;
end
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

birden fazla kayıt dönüyorsa select yerine for select yapısını kullanmanız lazım. Aratırsanız forumda birçok mesajda örnek ve açıklama var.

Kolay gelsin.
Cevapla