Stored Procedure Döngü işlemleri
Stored Procedure Döngü işlemleri
Merhaba arakadaşlar.
Forumlarda çok araştırdım ama şimdi soracağım konuyu bulamadım.
Ben şöyle bişey yapmak istiyorum bilmiyorum ama stored procedure de oluyomu bu.
Örnek olarak yazıyorum :
Diyelimki bir tablom var. bu tabloyu stored procedure de döngüye sokmak istiyorum yan. :
while tablom ...... tablonun sonuna gelene kakadr
begin
işlem
işlem
işlem...
end
ben bu döngüyü nasıl yaparım. ve tablonun o an hangi satırda olduğunu ve o satırdaki x hücrenin değerini nasıl öğrenirim.
Umarım düzgün sormuşumdur.
(Not insert into ile yapabilirsin demeyin... Ben stored procedure de döngüleri anlamak istiyorum).
Forumlarda çok araştırdım ama şimdi soracağım konuyu bulamadım.
Ben şöyle bişey yapmak istiyorum bilmiyorum ama stored procedure de oluyomu bu.
Örnek olarak yazıyorum :
Diyelimki bir tablom var. bu tabloyu stored procedure de döngüye sokmak istiyorum yan. :
while tablom ...... tablonun sonuna gelene kakadr
begin
işlem
işlem
işlem...
end
ben bu döngüyü nasıl yaparım. ve tablonun o an hangi satırda olduğunu ve o satırdaki x hücrenin değerini nasıl öğrenirim.
Umarım düzgün sormuşumdur.
(Not insert into ile yapabilirsin demeyin... Ben stored procedure de döngüleri anlamak istiyorum).
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Stored Procedure Döngü işlemleri
Fetch - Next ile bu kayıtları dolaşabilirsin.
Kod: Tümünü seç
declare @id int,@Deger char(10)
declare cur cursor for select Ref, Deger from test
open cur
fetch next from cur into @id, @Deger -->@id, ve @deger içine select ile seçilen Ref, Deger alan bilgileri gelir
while (@@FETCH_STATUS = 0) begin
-->update test set Deger=cast(@id as nvarchar(10)) where id=@id bu @id ve @deger artık istenildiği gibi kullanılabilir.
fetch next from cur into @id, @Deger -->@id, ve @deger içine select ile seçilen Ref, Deger alan bilgileri gelir
end
close cur
deallocate cur
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Stored Procedure Döngü işlemleri
Tam olarak anlayamadım ben bunu.
Birazdaha açıklayıcı yazabilirmisiniz. veya başka bir örnek verebilirmisiniz.
Birde ben toplam kayıt sayısını bu döngüde nasıl alırım ve while döngüsünde tablonun en sonuna geldiğimi nasıl anlarım.
Birazdaha açıklayıcı yazabilirmisiniz. veya başka bir örnek verebilirmisiniz.
Birde ben toplam kayıt sayısını bu döngüde nasıl alırım ve while döngüsünde tablonun en sonuna geldiğimi nasıl anlarım.
Re: Stored Procedure Döngü işlemleri
Stored procedure'de döngü için örnekleri olan varmıdır acaba.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Stored Procedure Döngü işlemleri
Yukarıda bir örnek, örnekte de bir döngü var. Örnekteki while döngüsü örneği yeterli gelmediyse (bence gayet açık ve net) sql'in çevrim içi yardımı olmadı internette arama ile bir çok örnek bulunabilir.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Stored Procedure Döngü işlemleri
Teşekkürler... Gayet açık..sabanakman yazdı:Yukarıda bir örnek, örnekte de bir döngü var. Örnekteki while döngüsü örneği yeterli gelmediyse (bence gayet açık ve net) sql'in çevrim içi yardımı olmadı internette arama ile bir çok örnek bulunabilir.
Re: Stored Procedure Döngü işlemleri
Peki ben döngüleri işleyebiliyorum artık ancak şöyle bir sorunum oldu acaba bunun çözümü varmıdır.
İç içe döngü çalıştırmak istiyorum yani:
while @@fetch_status=0
begin
döngü 1 işliyor
..
..
while @@fetch_status=0 ???? --(burası böylemidir bilmiyorum)
begin
döngü 2 işliyor
döngü 1 içinden değer alıcak...
...
end
döngü 1 içindeki kodlar
end
go
Herkese teşekkürler...
İç içe döngü çalıştırmak istiyorum yani:
while @@fetch_status=0
begin
döngü 1 işliyor
..
..
while @@fetch_status=0 ???? --(burası böylemidir bilmiyorum)
begin
döngü 2 işliyor
döngü 1 içinden değer alıcak...
...
end
döngü 1 içindeki kodlar
end
go
Herkese teşekkürler...
Re: Stored Procedure Döngü işlemleri
Arkadaşlar sorunumu deneme yanılma yöntemi ile çözdüm. İç içe döngüler çok güzel çalışıyor. Öğrenmek isteyen arkadaşlar için yaptığım proje örneğini aşağıya ekledim.
Yardım eden herkesten Allah razıolsun...
Yardım eden herkesten Allah razıolsun...
Kod: Tümünü seç
CREATE PROCEDURE [crm_vadeozetle] AS
declare @carino int
declare @toplamal float
declare @toplamgecmis float
declare @toplamgelecek float
declare @satistemsilcisi varchar(100)
declare @carikodu varchar(50)
declare @cariadi varchar(200)
declare @toplamalacak float
declare hesaplananvade_cur cursor
scroll
for select CARIID,SATISELEMAN,CARIKODU,CARIUNVAN,BAKIYE from hesaplanan_vadeler order by CARIID
open hesaplananvade_cur
FETCH FIRST FROM hesaplananvade_cur into @carino,@satistemsilcisi,@carikodu,@cariadi,@toplamalacak
set @toplamal=0
set @toplamgecmis=0
set @toplamgelecek=0
truncate table VadeOzetListe2
while @@FETCH_STATUS=0
begin
declare vadehesapla_cur cursor
scroll
for select TUTAR from Vade_Hesaplama WHERE CARIID=@carino and GUN<=0 order by GUN asc
open vadehesapla_cur
FETCH FIRST FROM vadehesapla_cur into @toplamal
while @@FETCH_STATUS=0
begin
set @toplamgecmis=@toplamgecmis+@toplamal
FETCH NEXT FROM vadehesapla_cur into @toplamal
end
close vadehesapla_cur
deallocate vadehesapla_cur
declare vadehesapla_cur cursor
scroll
for select TUTAR from Vade_Hesaplama WHERE CARIID=@carino and GUN>0 order by GUN asc
open vadehesapla_cur
FETCH FIRST FROM vadehesapla_cur into @toplamal
while @@FETCH_STATUS=0
begin
set @toplamgelecek=@toplamgelecek+@toplamal
FETCH NEXT FROM vadehesapla_cur into @toplamal
end
close vadehesapla_cur
deallocate vadehesapla_cur
insert into vadeozetliste2 (CARIID,SATISTEMSILCISI,CARIKODU,CARIADI,TOPLAMALACAK,VADESIGECMIS,VADESIGELMEMIS) VALUES (@carino,@satistemsilcisi,@carikodu,@cariadi,@toplamalacak,@toplamgecmis,@toplamgelecek)
FETCH NEXT FROM hesaplananvade_cur into @carino,@satistemsilcisi,@carikodu,@cariadi,@toplamalacak
--print @toplamgecmis
--print @toplamgelecek
set @toplamal=0
set @toplamgecmis=0
set @toplamgelecek=0
end
close hesaplananvade_cur
deallocate hesaplananvade_cur
GO
-
- Üye
- Mesajlar: 261
- Kayıt: 21 Tem 2006 04:59
- İletişim:
Re: Stored Procedure Döngü işlemleri
tuna hocam selamlar... benimde aşağıdaki işlemi stored procedure ile yapmam gerekiyor nasıl yapabilirim. delphi içindek yaptığım kod şu şekilde.
kayıt çok olduğunda işlem biraz uzun sürmekte. Muhtemeln stored procedure ile yapılınca zaman azalacağı kannatindeyim. Yardımcı olabilirseniz sevinirim.
Kod: Tümünü seç
dm.extre_query.First;
BAKIYE:=0; // bakiye değişekni sıfırlanıyor
WHILE NOT(dm.extre_query.EOF) DO // döngü yapıyor
begin
BAKIYE2:=BAKIYE;
IF (dm.extre_query.FieldByName('TOPLAMTUTAR').AsFloat> 0) and (dm.extre_query.FieldByName('TUR').AsString <> 'İADE')THEN
BAKIYE:=BAKIYE+dm.extre_query.FieldByName('TOPLAMTUTAR').AsFloat;
IF dm.extre_query.FieldByName('ODEME').AsFloat> 0 THEN
BAKIYE := BAKIYE - dm.extre_query.FieldByName('ODEME').AsFloat;
dm.extre_query.Edit;
dm.extre_query.FieldByName('SON_DURUM').AsFloat:= BAKIYE;
dm.extre_query.FieldByName('SON_DURUM2').AsFloat:= BAKIYE2;
dm.extre_query.Post;
dm.extre_query.Next;
end;
Re: Stored Procedure Döngü işlemleri
Benim örneğe bakarak yapabilirsin. Ben orada iç içe döngüler kullanmıştım. Sen sadece bir döngü ile çalışacağın için işin kolay.
Sen başla takıldığın yer olursa stor proc kodun ile sor yine cevaplarım.
Sen başla takıldığın yer olursa stor proc kodun ile sor yine cevaplarım.
-
- Üye
- Mesajlar: 261
- Kayıt: 21 Tem 2006 04:59
- İletişim:
Re: Stored Procedure Döngü işlemleri
tuna hocam tekrar merhabalar... Ben döngü ile editleme ve post işlemi hiç yapmadım. orda kullanıclak kodlara hakim değilim. O yüzden rica etsem (umarım kabalık olmaz) detaylıca anlatan, benim kodlar üzerinden çalışan örnek oluşturabilirseniz çok sevinirim. ben procedur kısmından varaible seçeneğinden bakiye ve bakiye2 alanlarını tanımladım. ama nasıl kullanacağımı dönüye nasıl sokacağımın kullanımı bilemediğimden kaldı. sizden ricam bu konuda destekleriniz.
saygıyla kalınız.
saygıyla kalınız.
Re: Stored Procedure Döngü işlemleri
sen stored procedure yi nerede tanımlıyorsun. Delphidemi yoksa direk sql server içindemi.
Eğer delphi tarafında soruyorsan ben onu bilmiyorum. Zaten bilsemde kullanmam. Ama sql içinden yazacaksan önce stored procedure nasıl yazılır gibi makaleler okuyarak başlamanı öneririm.
Çünkü sql'in programlama dili farklıdır.
Ufak ufak yazamaya başla. En azından mantığı kavrayabilirsin.
Eğer delphi tarafında soruyorsan ben onu bilmiyorum. Zaten bilsemde kullanmam. Ama sql içinden yazacaksan önce stored procedure nasıl yazılır gibi makaleler okuyarak başlamanı öneririm.
Çünkü sql'in programlama dili farklıdır.
Ufak ufak yazamaya başla. En azından mantığı kavrayabilirsin.
-
- Üye
- Mesajlar: 261
- Kayıt: 21 Tem 2006 04:59
- İletişim:
Re: Stored Procedure Döngü işlemleri
hocam ben firebird kullanıyorum. firebirdde stred procedure yi destekliyor. direk firebird içerisinden kullanıyorum new_procedure tanımlayarak yapıyorum. ben biraz daha araştırma yapayım. saygıyla kalın hocam yardımlarınız ve önerileriniz için teşekkür ederim.