Sp de Sql cümlesinde if Kullanımı

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
kurtel
Üye
Mesajlar: 14
Kayıt: 19 Oca 2004 05:47

Sp de Sql cümlesinde if Kullanımı

Mesaj gönderen kurtel »

Arkadaşlar Merhaba.
Bir Konuda yardımınıza ihtiyacım var. Yardımcı olabilirseniz sevinirim.
Database Interbase 6 Kullanıyorum. İstediğim Stored Procedure ' de
Sql sorgusunun içinde "if" nasıl kullanabilirim.

Select Stok_Kod From Stok
Where Stok_Frm = "INTEL"
if (Kdv_Orn <> "") then And Stk_Kdv = :Kdv_Orn
Into :Stk_Kod

Yukarıdaki Sql sorgusu çalışmıyor. Ben Nasıl Sql sorgusunda "if" koşulunu kullanabilirim. (Stored Procedure de)

Teşekkürler, iyi çalışmalar ...
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7602
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

burda hem konu anlatımı hem de if örneği var :

http://www.delphiturkiye.com/index.php?page=trigger.htm

Kolay gelsin.
kurtel
Üye
Mesajlar: 14
Kayıt: 19 Oca 2004 05:47

Mesaj gönderen kurtel »

Mustafa Bey Problemimi anlayamadınız sanırım. Gönderdiğiniz Linki daha önce okumuştum. Ama Benim problemimin çözümü yok orada. "if" kullanımın örneği var ama sql cümlesinin içinde yok. Diğer türlü "if" kullanımını yapıyorum.

Select Stok_Kod From Stok
Where Stok_Frm = "INTEL"
if (Kdv_Orn <> "") then And Stk_Kdv = :Kdv_Orn
Into :Stk_Kod

Benim istediğim Sql sorgusunun içinde olması. Sanırım böyle birşey İnterbase de yok...

İlginiz den dolayı teşekkürler...
İyi çalışmalar...
kurtel
Üye
Mesajlar: 14
Kayıt: 19 Oca 2004 05:47

Mesaj gönderen kurtel »

Şöyle bir çözüm yolu olur diyebilirsiniz..

if (Kdv_Orn <> "") then
begin
Select Stok_Kod From Stok
Where Stok_Frm = "INTEL"
And Stk_Kdv = :Kdv_Orn
Into :Stk_Kod
end else
begin
Select Stok_Kod From Stok
Where Stok_Frm = "INTEL"
Into :Stk_Kod
end

Yalnız benim Sql sorgusunun içinde kullanacağım if koşulu bir tane değil en az 9-10 tane. Bunun için yukarıdaki gibi, hepsi (9-10) ve kombinasyonları için yapmam olmaz.

:( :( :(
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

Kod: Tümünü seç

case when
       (alan1>alan2) then 
          alan1-alan2     
       else
          alan2-alan1         
       end
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

bilgi olsun diye soyluyorum....
sql cümleleri çinde kullanılan if ile sql cümlelerini birbirinden ayıran bir SP icinde kullanılan if farklıdır... birincisine yani sql cümlesi içinde kullanıla if expression denir ki bunu her veritabanı desteklemeyebilir. ikincisine ise if statement denir ve aynen delphi de yaradığı işe yarar ve bildiğim kadarı SP yazılabilen her veritabanı destekliyor...
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
doganzorlu
Kıdemli Üye
Mesajlar: 395
Kayıt: 22 Tem 2004 09:15
Konum: İzmir
İletişim:

Mesaj gönderen doganzorlu »

Selam,

Kod: Tümünü seç

SELECT Stok_Kod FROM Stok 
WHERE Stok_Frm = "INTEL" AND (Kdv_Orn = "" OR Stk_Kdv = :Kdv_Orn) INTO :Stk_Kod 
Yukarıdaki gibi case kullanmadan da yazılabilir bu query.

Kolay gelsin,
Doğan Zorlu, İzmir

------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
Cevapla