procedurede yardı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
Kullanıcı avatarı
Ademkoysuren
Üye
Mesajlar: 83
Kayıt: 26 Ağu 2003 03:07
Konum: KIRŞEHİR
İletişim:

procedurede yardım

Mesaj gönderen Ademkoysuren »

slm ardadaşlar
aşağıda gönderdiğim prosedurde normalde sayıyı gönderince 13 kere dönüyor bu dönme sırasında update işlemi çalışıyor benim sorunum bu uptate her seferde çalışması lazım ama bir kere çalışıyor ikinci bir procedur döngüsüne girmiyor sebebi ne olabilir

Kod: Tümünü seç


CREATE PROCEDURE OGR_SINIF_DEGISTIRME (
    OGRENCI_ID INTEGER)
AS
DECLARE VARIABLE SINIF_DERSLER_ID INTEGER;
DECLARE VARIABLE DERSLER_ID INTEGER;
BEGIN
  FOR
    SELECT OGRENCI_BILGILERI.ID, SINIF_DERSLERI.ID, SINIF_DERSLERI.DERSLER_ID
      FROM OGRENCI_BILGILERI
         INNER JOIN SINIF_DERSLERI ON (OGRENCI_BILGILERI.OGR_SINIF_ID = SINIF_DERSLERI.SINIF_ID)
       where ogrenci_bilgileri.id = :ogrenci_id
    INTO :OGRENCI_ID,
         :SINIF_DERSLER_ID,
         :DERSLER_ID
  DO
  BEGIN
       update ders_notlari
             SET ders_notlari.sinif_dersleri_id = :SINIF_DERSLER_ID
               WHERE  ders_notlari.ogrenci_id = :ogrenci_id and
                      ders_notlari.dersler_id = :dersler_id;
      SUSPEND;
  END
END

not:kodlarınızı code tagı içine alınız. (aslangeri)
Cemre Bilgisayar Yazılım
KIRŞEHİR
Kullanıcı avatarı
Terminator
Üye
Mesajlar: 313
Kayıt: 13 Ara 2005 01:45
Konum: İzmir, ama Aydın Efesi!

Re: procedurede yardım

Mesaj gönderen Terminator »

Ademkoysuren yazdı:slm ardadaşlar
aşağıda gönderdiğim prosedurde normalde sayıyı gönderince 13 kere dönüyor bu dönme sırasında update işlemi çalışıyor benim sorunum bu uptate her seferde çalışması lazım ama bir kere çalışıyor ikinci bir procedur döngüsüne girmiyor sebebi ne olabilir



CREATE PROCEDURE OGR_SINIF_DEGISTIRME (
OGRENCI_ID INTEGER)
AS
DECLARE VARIABLE SINIF_DERSLER_ID INTEGER;
DECLARE VARIABLE DERSLER_ID INTEGER;
BEGIN
FOR
SELECT OGRENCI_BILGILERI.ID, SINIF_DERSLERI.ID, SINIF_DERSLERI.DERSLER_ID
FROM OGRENCI_BILGILERI
INNER JOIN SINIF_DERSLERI ON (OGRENCI_BILGILERI.OGR_SINIF_ID = SINIF_DERSLERI.SINIF_ID)
where ogrenci_bilgileri.id = :ogrenci_id
INTO :OGRENCI_ID,
:SINIF_DERSLER_ID,
:DERSLER_ID
DO
BEGIN
update ders_notlari
SET ders_notlari.sinif_dersleri_id = :SINIF_DERSLER_ID
WHERE ders_notlari.ogrenci_id = :ogrenci_id and
ders_notlari.dersler_id = :dersler_id;
SUSPEND;
END
END
bu suspendli-multirow bir procedure oldugu için select ile çağırıyo olmalısın. peki, bütün suspendlerin işlemesi sağlıyor musun? yani fetchall yapmaya zorluyor musun?
Firebird Foundation Member #208
http://www.firebirdsql.org
Kullanıcı avatarı
Ademkoysuren
Üye
Mesajlar: 83
Kayıt: 26 Ağu 2003 03:07
Konum: KIRŞEHİR
İletişim:

Mesaj gönderen Ademkoysuren »

peki bu dediğinizi nasıl yapacam
Cemre Bilgisayar Yazılım
KIRŞEHİR
Kullanıcı avatarı
Terminator
Üye
Mesajlar: 313
Kayıt: 13 Ara 2005 01:45
Konum: İzmir, ama Aydın Efesi!

Mesaj gönderen Terminator »

özel bişey yapman gerekmiyor, SP burda zaten normal bir table gibi davranır. kayıtları EOF olana kadar okuyacaksın.
ya da ibexpert SQL penceresinden
select * from myproc(vs vs) yaz F9 yap bütün kayıtları gridde gezer görürsün suspend sayısı kadar.
Firebird Foundation Member #208
http://www.firebirdsql.org
Cevapla