Stored Proc.

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
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Stored Proc.

Mesaj gönderen bgoktas »

Kod: Tümünü seç

CREATE PROCEDURE SP_GIRISCIKISLISTESI (
    SICILNO1 VARCHAR (12))
AS
 declare variable sicil char(12);
 declare variable tar timestamp;
 declare variable saa timestamp;

begin
 /*DELETE from tmpgircik;*/
 
 for select sicilno,tarih,saat from hareket
     where sicilno=:sicilno1
     order by sicilno,tarih,saat
     into :sicil,:tar,:saa
   do
   begin
     insert into tmpgircik(sicilno,tarih,har1) values(:sicil,:tar,:saa);
   end

END
Buradaki hatayı bulamadım tmpgircik tablesine kayıt yapmıyor.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

bu islem icin for select kullanmana gerek yok ki hocam,
ayrıca suspend kullanılmaz ise dogru calısmaz diye biliyorum

Kod: Tümünü seç

 insert into tmpgircik 
   select sicilno,tarih,saat from hareket  where sicilno=:sicilno1;
sadece bunun ile kayıt yapması lazım
ÜŞENME,ERTELEME,VAZGEÇME
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

Hocam ben str. proc. için antrenman yapıyorum. Amacım for yapısını anlamak...
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

suspend koydum fakat yine olmadı, suspend tam olarak ne işe yarıyor burada
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

hocam daha once benzer bir baslık acılmıstı
viewtopic.php?t=2820&postdays=0&postorder=asc&start=0
en alttaki adnan hocamın yazdıgı mesaj konuyu acıklıyor
ÜŞENME,ERTELEME,VAZGEÇME
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

Kod: Tümünü seç

CREATE PROCEDURE SP_GIRISCIKISLISTESI (
    SICILNO1 VARCHAR (12))
AS
 declare variable sicil char(12);
 declare variable tar timestamp;
 declare variable saa timestamp;
 declare variable gc char(1);

begin
 DELETE from tmpgircik;

 for select sicilno,tarih,saat,gckod from hareket
     where sicilno=:sicilno1
     order by sicilno,tarih,saat
     into :sicil,:tar,:saa,:gc
   do
   suspend;
   begin
     if (:gc='0') then
     insert into tmpgircik(sicilno,tarih,har1) values(:sicil,:tar,:saa);
     else insert into tmpgircik(sicilno,tarih,har2) values(:sicil,:tar,:saa);

     
   end

END
şeklinde oldu
En son bgoktas tarafından 09 Haz 2004 06:09 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

IB/FB kullanıyorsanız tüm sql ve raiable ları büyük harfle yazmanızı öneririm.
Sorularınızda sistem belirtirsenizde daha açıklayıcı olur. IB/FB M$ MY SQL versiyon gibi.

sonucunu yazdığın için teşekkür ederim. 3 cevap daha borcun var ona göre :twisted: :D

Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

Ib kullanıyorum. Belirtmeyi unutmuşum , kusura bakmayın
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Bence konu SP (Stored Procedure) olunca Kuri_TLJ nin cevabını aynen buraya alıntı olarak eklemeyi uygun buldum;
Kuri_TLJ yazdı:Selamlar,

Gökmen'in de belirttiği gibi eğer SP'den herhangi bir ResultSet dönecek ise (Yani tek bir kayıttan fazla birşeyler dönüyor ise) FOR SELECT ve SUSPEND eklemek gerekiyor. SUSPEND burada parametrelerin Client'e ulaşması için server'ı bekletir. Yani Server turlama yaparken birinci Return Parametrelerini gönderiri ve Client'tan, Tamam Aldım yanıtını bekler, ondan sonra ikinci, üçüncü... böyle gider taaa ki SP kendi içerisindeki döngüyü bitirene kadar...

Çalışma mantığı bu şekilde.

Kolay Gelsin.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla