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ı: 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;
WWW
Cevapla
#5
(21-03-2019, Saat: 09:43)mrmarman Adlı Kullanıcıdan Alıntı: 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
  store procedure problemi sadikacar60 10 836 26-02-2024, Saat: 14:37
Son Yorum: sadikacar60
  Kullanıcı ID Numarasına Göre Procedure Çalıştırma MugenPower 4 1.625 23-05-2022, Saat: 11:13
Son Yorum: OzanGuclu
  Procedure bağlantı metodu ve if kullanımı 41linea41 2 2.163 04-05-2020, Saat: 09:52
Son Yorum: esistem
  Bir defalık alım işlemi Aktolgali 6 4.030 13-11-2019, Saat: 18:43
Son Yorum: Abdullah ILGAZ
  Procedure Yardım SecondLife 1 2.109 03-06-2018, Saat: 19:18
Son Yorum: Kuri_YJ



Konuyu Okuyanlar: 1 Ziyaretçi