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
not:kodlarınızı code tagı içine alınız. (aslangeri)
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 = grenci_id
INTO :OGRENCI_ID,
:SINIF_DERSLER_ID, ERSLER_ID
DO
BEGIN
update ders_notlari
SET ders_notlari.sinif_dersleri_id = :SINIF_DERSLER_ID
WHERE ders_notlari.ogrenci_id = grenci_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?
ö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.