Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Stored Procedure 'de döngü işlemi
#1
Verdiğimiz, birden çok kalemde sipariş istekleri için eksik gelen ya da fazla gelen ürünler oluyor. Benim amacım bütün kalemleri kontrol edip eğer eksik gelen herhangi bir satır varsa diğer satırlar ne olursa olsun -1 sonucunu vermesi, eksik gelen kalem yok fazla gelen varsa diğer satırlar ne olursa olsun 1 sonucunu vermesi , bütün kalemler tam ise 0 sonucunu verecek bir firebird veri tabanında stored procedure yazmak istiyorum. Bu konuda yardımcı olabilirseniz memnun olurum.

Saygılarımla,
Topluluk mopluluk yok :/
Cevapla
#2
(21-03-2019, Saat: 09:21)boreas Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Verdiğimiz, birden çok kalemde sipariş istekleri için eksik gelen ya da fazla gelen ürünler oluyor. Benim amacım bütün kalemleri kontrol edip eğer eksik gelen herhangi bir satır varsa diğer satırlar ne olursa olsun -1 sonucunu vermesi, eksik gelen kalem yok fazla gelen varsa diğer satırlar ne olursa olsun 1 sonucunu vermesi , bütün kalemler tam ise 0 sonucunu verecek bir firebird veri tabanında stored procedure yazmak istiyorum. Bu konuda yardımcı olabilirseniz memnun olurum.

Saygılarımla,

Tablo yapinizi bilmiyorum ama gönderecegim kod size fikir verebilir.
  for
    select id,siparismiktari,gelenmiktar from siparisler
           into  :sid,:siparismiktari,:gelenmiktar
 do
 begin
  if ((siparismiktari - (gelenmiktar))<0) then 
begin
        sonuc=-1; 
        suspend;
       end 
  if ((siparismiktari - (gelenmiktar))>0) then 
begin
        sonuc=1;
        suspend;
       end 
  
 end;
Cevapla
#3
Merhaba.

Konuyu saptırıyor olmak istemem, kısa bir soru : bunu SQL Select içinde direkt görseniz ve sonra da CREATE VIEW ile  WHERE için sadece tarih aralığı kalacak şekilde oluştursanız daha kısa yoldan çözüm olmaz mı ?

Yani SELECT içinde örneğin 
SELECT 
  SiparisKodu
, SiparisTarihi
, GelisTarihi
, Siparis_vs_vs_vs
, TalepEdilen
, KargodaGelen
, CASE WHEN TalepEdilen < KargodaGelen THEN -1 WHEN TalepEdilen = KargodaGelen THEN 1 ELSE 0 END as UrunSevkiyatDurumu
FROM SiparisHareketTablosu


sonra bun select satırlarının başına sadece

CREATE VIEW DurumRaporuView as 

ekleyip

Lazım olduğunda

SELECT UrunSevkiyatDurumu FROM DurumRaporuView WHERE GelisTarihi between .......

şeklinde her daim yanınızda olsa.

Döngüyle de uğraşmazsınız.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#4
@klavye nin kodunu biraz değiştirebilirsiniz. 
Döngü ilk farkta kırılıp sonuna kadar gitmek zorunda kalmaz. (test etmedim)
sonuc = 0;
for select id,siparismiktari,gelenmiktar 
     from siparisler
           into  :sid,:siparismiktari,:gelenmiktar
do
begin
 if ((siparismiktari - (gelenmiktar))<0) then
begin
       sonuc=-1; 
       break;
      end
 if ((siparismiktari - (gelenmiktar))>0) then
begin
       sonuc=1;
       break;
      end
   suspend;
end;
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#5
(21-03-2019, Saat: 09:43)mrmarman Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhaba.

Konuyu saptırıyor olmak istemem, kısa bir soru : bunu SQL Select içinde direkt görseniz ve sonra da CREATE VIEW ile  WHERE için sadece tarih aralığı kalacak şekilde oluştursanız daha kısa yoldan çözüm olmaz mı ?

Yani SELECT içinde örneğin 
SELECT 
  SiparisKodu
, SiparisTarihi
, GelisTarihi
, Siparis_vs_vs_vs
, TalepEdilen
, KargodaGelen
, CASE WHEN TalepEdilen < KargodaGelen THEN -1 WHEN TalepEdilen = KargodaGelen THEN 1 ELSE 0 END as UrunSevkiyatDurumu
FROM SiparisHareketTablosu


sonra bun select satırlarının başına sadece

CREATE VIEW DurumRaporuView as 

ekleyip

Lazım olduğunda

SELECT UrunSevkiyatDurumu FROM DurumRaporuView WHERE GelisTarihi between .......

şeklinde her daim yanınızda olsa.

Döngüyle de uğraşmazsınız.

Bu şekilde yapıldığında her satır için sonuç veriyor ama ben çok satırlı bir siparişde tek sonuç istiyorum. Bunuda @klavye 'nin verdiği örneği biraz değiştirerek çözdüm.

Yardımlarınız için çok teşekkür ederim.
Topluluk mopluluk yok :/
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Procedure Yardım SecondLife 1 742 03-06-2018, Saat: 19:18
Son Yorum: Kuri_YJ
  stored procedure ile arama yapma canbir 6 969 20-04-2018, Saat: 16:51
Son Yorum: canbir
  Firebird CariBakiye Hesaplama Stored Procedure masteryoda 4 1.638 08-02-2017, Saat: 17:11
Son Yorum: masteryoda



Konuyu Okuyanlar: 1 Ziyaretçi