INTERBASE TRIGGER ICINDE BIR STRINGIN PARÇALARINI BULMAK...

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
goksenin
Üye
Mesajlar: 37
Kayıt: 04 Ara 2003 11:59
İletişim:

INTERBASE TRIGGER ICINDE BIR STRINGIN PARÇALARINI BULMAK...

Mesaj gönderen goksenin »

Selamunaleykum;

Bir Trigger veya Proc içinde Bir değişkeni Delphi 'deki

Copy('değişken',X,XX);

gibi bölebileceğim bir komut var mı SQLREF ten bulamadım...

Ve buna benzer komutların tümüne nasıl erişebilirim...
Ne işe yaradıklarını ve nasıl kullanıldıklarını nerden bulabilirim.

Hayırlı Çalışmalar...

Göksenin OK - İZMİR
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Konu ile ilgili olarak (bu tür fonksiyonlar için) UDF'ler var (User Defined Function). Bu sayede benzeri işlemleri, bir DLL hazırlayıp Interbase/Firebird'ün kullanması sağlanıyor.

Aradığınız komutlar SUBSTRING gibi, TRIM gibi fonksiyonlardan bir kısmı (matematik fonksiyonları da dahil) ib_udf.dll'in içinde var.

Elinizde Interbase'e ait dokumanlar (Language Reference) var ise orada Interbase ile birlikte gelen standard UDF'leri nasıl tanımlayabileceğiniz anlatılıyor. Oraya bir göz atabilirsiniz.

Dokumanlardan alıntı,
/*****************************************
*
* s u b s t r
*
*****************************************
*
* Functional description:
* substr(s,m,n) returns the substring
* of s which starts at position m and
* ending at position n.
* Note: This function is NOT limited to
* receiving and returning only 80 characters,
* rather, it can use as long as 32767
* characters which is the limit on an
* INTERBASE character string.
* Change by Claudio Valderrama: when n>length(s),
* the result will be the original string instead
* of NULL as it was originally designed.
*
*****************************************/
DECLARE EXTERNAL FUNCTION substr
CSTRING(80), SMALLINT, SMALLINT
RETURNS CSTRING(80) FREE_IT
ENTRY_POINT 'IB_UDF_substr' MODULE_NAME 'ib_udf';

Kolay gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

C:\Program Files\Borland\InterBase\examples\Udf\ib_udf.sql
bu dosyayı ibexpert ve ibconsoldan açıp çalıştırın. tanımlı tüm udfler veritabanınıza eklenecektir.
goksenin
Üye
Mesajlar: 37
Kayıt: 04 Ara 2003 11:59
İletişim:

WHILE, FOR KOMUTLARI VE TEŞEKKÜR...

Mesaj gönderen goksenin »

Selamunaleykum,
İkinizede çok teşekkür ederim.Allah razı olsun.
Her halde UDF işini anladım ve halletmiş durumdayım...

Ancak bir sorum daha olacak...SP ler ve TRIGGERlar içinde ;

IF THEN ELSE kalıbını kullana biliyorum ne var ki Delphi, diğer dillerde ve diğer veritabalarında (ORACLE,MSSQL) ortak olan operatorleride Interbase içinde kullanabiliyormuyuz

Bunlar mesala bir WHILE döngüsü bir FOR döngüsü ve en önemliside CURSOR oluşturabilirmiyiz...?
Yardımcı olursanız sevinirim.

Hayırlı çalışmalar.
Göksenin OK.

(Hicri yılın hayırlara vesile olması duası ile tüm grubun hicri yılını tebrik ederim.)
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Ve Aleyküm selam,

Her bir SQL Tabanlı Veritabanın kendine has bir takım ek fonksiyon ve özellikleri var. Bu tür özellikleri o veri tabanına ait dokumantasyonda veya örneklerinde görebilirsiniz.

Ancak hepsinde belirli standardlar geçerlidir. Örneğin SQL92 standardı gibi. Bu standardlara uygun hazırlanmış her türlü veritabanı bu standardlara uygun her türlü veritabanlarında sorunsuz çalıştırılabilir.

Bu Delphi'nin değil, kullanılan veri tabanlarının özellikleridir.

Konu ile ilgili daha detaylı bilgiler için, forumun makaleler ve ipuçları bölümlerine bir göz atın size faydalı olabilecek çeşitli yazıları görebileceksiniz.

Oradaki yazılar, bu forumdaki aktif ve yardımsever insanların emeğiyle hazırlanmıştır ve Türkçedir :)

Kolay gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
goksenin
Üye
Mesajlar: 37
Kayıt: 04 Ara 2003 11:59
İletişim:

İlgine teşekkür ederim ama...

Mesaj gönderen goksenin »

S.a.
İlgine teşekkür ederim Kuri_TLJ ne kadar kinayeli bir mesaj olsada...
FOR veya WHILE döngüleri sadece veri tabanlarının deil her dilde de kullanılan komutlar. Bunun farkındayım ben sadece sorumun anlaşılması için bu yolu seçtim çünkü aynı soruyu defalarca sordum.
Biriside ewet var veya hayır yok demedi için böyle sordum...
Her neyse burasını tartışma ortamına çevirmek son isteğim.

Makaleleri ve İp Uçlarınıda dolaştım for veya while örnekleryen SP veya bir Triggera rastlamadım.

Eğer bunular varsa bu örnekleri atabilirseniz sevinirim.


Hayırlı Çalışmalar.

Göksenin OK.

Sitede emeği geçenlerden de Allah razı olsun...
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Öncelikle herhangi bir kinaye söz konusu değil belki üslubumdan kaynaklanmıştır bu sebeple farklı bir anlaşılma olmuş olabilir.

Aşağıdaki MS-SQL Server'da CURSOR tanımlama WHILE Döngüsü gibi örneklerin bulunduğu bir SP var orada incelerseniz sanırım yardımcı olur.

Biraz uzun ama idare edin. Devamında FOR SELECT ile İlgili bir şeyi ekledim.

Kod: Tümünü seç

CREATE PROCEDURE ADNAN_KONTROL   
AS

DECLARE @INT_MS_ID INTEGER , @INT_MS_BY_ID INTEGER , @DEF_GRUBU  VARCHAR(1) , @YIRMI_GUN VARCHAR(1) , @RISK VARCHAR(1) , @MS_SIRKET_KOD VARCHAR(1)
DECLARE @DBL_BAKIYE NUMERIC(18,2)
DECLARE @DT_MH_TARIH DATETIME , @DBL_MH_BORC NUMERIC(18,2)

CREATE TABLE #TMP_RISK_KONTROL
(
 TMP_DEF_GRUBU VARCHAR(1) ,
 TMP_YIRMI_GUN_ASAN VARCHAR(1) ,
 TMP_RISK VARCHAR(1),
 TMP_MS_ID INTEGER
)

DECLARE CRS_RISK_KONTROL CURSOR FOR
SELECT DISTINCT SD_MUS_ID FROM MS_SIPARIS_DETAY WHERE 	ISNULL(SD_CIK_MIKTAR,0) < SD_MIKTAR
OPEN CRS_RISK_KONTROL
FETCH NEXT FROM CRS_RISK_KONTROL INTO @INT_MS_ID
WHILE (@@FETCH_STATUS = 0) 
BEGIN
  SELECT @INT_MS_BY_ID = (SELECT MS_BY_ID FROM GN_MUSTERILER WHERE MS_ID = @INT_MS_ID)
  SELECT @MS_SIRKET_KOD = (SELECT MS_SIRKET_KOD FROM GN_MUSTERILER WHERE MS_ID = @INT_MS_ID)
  IF (
	  ISNULL((SELECT SUM(ISNULL(TEM_KBL_TUT,0)) FROM IS_TEMINATLAR WITH (NOLOCK) WHERE TEM_MS_ID= @INT_MS_BY_ID  AND TEM_TURU=1 AND  (TEM_STATUS In (2,5)) AND ((TEM_SIRKET_TIP = @MS_SIRKET_KOD AND TEM_MEK_TIPI = 0) OR (TEM_MEK_TIPI = 1)) ),0)
	+ ISNULL((SELECT SUM(ISNULL(KBL_TUTAR,0)) FROM IS_ITM_GMEN WITH (NOLOCK) WHERE TEM_TURU = 2 AND BY_ID = @INT_MS_BY_ID AND (STATUS In (2,5)) AND ((ITM_SIRKET_TIP = @MS_SIRKET_KOD AND ITM_MEK_TIPI = 0) OR (ITM_MEK_TIPI = 1))),0)
	+ ISNULL((SELECT SUM(ISNULL(AKR_KLBLR_LIMIT,0)) FROM IS_ACIK_KREDILER_AKTIF WITH (NOLOCK) WHERE AKR_MSBY_ID =  @INT_MS_BY_ID ),0)
	+ ISNULL((SELECT SUM(ISNULL(YKR_MIKTAR,0)) FROM IS_YONETIM_KREDISI WITH (NOLOCK) WHERE YKR_MSBY_ID = @INT_MS_BY_ID),0)
	+ ISNULL((SELECT SUM(ISNULL(BKR_ONY_MIKTAR,0)) FROM IS_BOLGE_KREDISI WITH (NOLOCK) WHERE BKR_MSBY_ID = @INT_MS_BY_ID),0)
	+ ISNULL((SELECT SUM(ISNULL(KRD_MIKTAR,0)) FROM IS_KREDILER WITH (NOLOCK) WHERE KRD_MSBY_ID = @INT_MS_BY_ID),0)
	)
	-
	( 
	   ISNULL((SELECT SUM(ISNULL(CD_TUTAR,0)) FROM MS_CEK_DETAY  WITH (NOLOCK) WHERE CD_SON_DURUM IN((SELECT CST_BANKA_DURUM_ID FROM MS_CS_TANIMLARI  WITH (NOLOCK) ),(SELECT CST_PORTFOY_DURUM_ID FROM  MS_CS_TANIMLARI  WITH (NOLOCK) )) AND CD_ILK_MUST_ID= @INT_MS_ID),0)
	+ ISNULL((SELECT SUM(ISNULL(STD_TUTAR,0)) FROM MS_SENET_DETAY  WITH (NOLOCK)  WHERE STD_SON_DURUM IN((SELECT CST_BANKA_DURUM_ID FROM MS_CS_TANIMLARI  WITH (NOLOCK)  ),(SELECT CST_PORTFOY_DURUM_ID FROM MS_CS_TANIMLARI  WITH (NOLOCK)  )) AND STD_MUST_ID= @INT_MS_ID),0)
	+ ISNULL((SELECT SUM((ISNULL(SVD_TUTAR,0) / ISNULL(SVD_MIKTAR,0)) * (ISNULL(SVD_MIKTAR,0) - ISNULL(ADET,0)) ) FROM MS_BEKLEYEN_SEVKEMIRLERI_2 WITH (NOLOCK) WHERE ISNULL(SVD_MIKTAR,0) - ISNULL(ADET,0)>0 AND SVD_MUST_ID= @INT_MS_ID),0)  
             + ISNULL((SELECT SUM(ISNULL(MH_BORC, 0) - ISNULL(MH_ALACAK, 0)) FROM MS_CARI_HAREKET WITH (NOLOCK) WHERE MH_SIRKET_KOD = @MS_SIRKET_KOD AND MH_CK_TIP = 1 AND MH_MUST_ID = @INT_MS_ID), 0) 
-- ADNAN (AŞAĞISI YANLIŞTI, YUKARIDAKİ DOĞRU, BKZ. KREDİ RİSK PERFORMANS RAPORU
--	+ ISNULL((SELECT SUM(ISNULL(CK_TOP_BORC,0)- ISNULL(CK_TOP_ALACAK,0)) FROM MS_CARI_KART WITH (NOLOCK) WHERE CK_MUST_ID= @INT_MS_ID),0)
	+ ISNULL((SELECT (ISNULL((SELECT SUM(SVD_TUTAR) FROM MS_SEVKEMRI_DETAY WITH (NOLOCK) WHERE SVD_SIRKET_KOD = @MS_SIRKET_KOD AND SVD_MUST_ID = @INT_MS_ID),0) - 
	         ISNULL((SELECT SUM(FB_NET_TUTAR) FROM MS_FATURA_BASLIK WITH (NOLOCK) WHERE FB_SIRKET_KOD =  @MS_SIRKET_KOD AND FB_MUST_ID = @INT_MS_ID AND FB_PRN_FLAG > 0 AND FB_TIP = '2' AND ISNULL(FB_MAMUL,0) = 1),0)) +
	         ISNULL((SELECT SUM(FB_NET_TUTAR) FROM MS_FATURA_BASLIK WITH (NOLOCK) WHERE FB_SIRKET_KOD =  @MS_SIRKET_KOD AND FB_MUST_ID = @INT_MS_ID AND FB_PRN_FLAG = 0 AND FB_TIP = '2' AND ISNULL(FB_MAMUL,0) = 0),0) ),0)
             + ISNULL((SELECT SUM(MSB.NET_TUTAR) FROM MS_BEKLEYEN_SIPARISLER_KREDI_RISK_PERFORMANS_RAPORU MSB WHERE MSB.SB_MUST_ID = @INT_MS_ID),0) 
	) <0
	SELECT   @RISK = '1'
  ELSE 
	SELECT   @RISK = '0'

-- DEF GRUBU KONTROLU
   IF (SELECT COUNT(MS_GRUP) FROM GN_MUSTERILER WHERE ((MS_GRUP LIKE 'D%') OR (MS_GRUP LIKE 'E%') OR (MS_GRUP LIKE 'F%') )AND MS_ID = @INT_MS_ID) > 0 
        	SELECT @DEF_GRUBU='1'
  ELSE 
	SELECT   @DEF_GRUBU = '0'
  --  20 GÜNÜ AŞAN BAKİYE KONTROLU
  SELECT @DBL_BAKIYE = ISNULL((SELECT SUM(ISNULL(MH_BORC,0) - ISNULL(MH_ALACAK,0)) FROM MS_CARI_HAREKET WITH (NOLOCK) WHERE MH_MUST_ID = @INT_MS_ID AND MH_SIRKET_KOD = @MS_SIRKET_KOD),0)
--  SELECT @DBL_BAKIYE = (SELECT ISNULL(SUM(CK_TOP_BORC - CK_TOP_ALACAK),0) FROM MS_CARI_KART WHERE CK_MUST_ID =@INT_MS_ID)

  DECLARE CRS_BAKIYE_KONTROL CURSOR  FOR 
  SELECT MH_TARIH, MH_BORC FROM MS_CARI_HAREKET WHERE (ISNULL(MH_BORC,0) > 0) AND MH_MUST_ID = @INT_MS_ID  ORDER BY MH_VADE  DESC
  OPEN CRS_BAKIYE_KONTROL
  FETCH NEXT FROM CRS_BAKIYE_KONTROL INTO @DT_MH_TARIH , @DBL_MH_BORC
  WHILE (@@FETCH_STATUS = 0) AND ( @DBL_BAKIYE >0) 
      BEGIN
           IF @DBL_BAKIYE > @DBL_MH_BORC
                  SELECT @DBL_BAKIYE = @DBL_BAKIYE - @DBL_MH_BORC
           FETCH NEXT FROM CRS_BAKIYE_KONTROL INTO @DT_MH_TARIH , @DBL_MH_BORC      
      END
  CLOSE  CRS_BAKIYE_KONTROL
  DEALLOCATE  CRS_BAKIYE_KONTROL
  IF (@DBL_BAKIYE <= 0 ) AND (GETDATE() - @DT_MH_TARIH >20 )
      SELECT @YIRMI_GUN  = '1' 
  ELSE      
       SELECT @YIRMI_GUN = '0' 

INSERT INTO #TMP_RISK_KONTROL ( TMP_DEF_GRUBU ,  TMP_YIRMI_GUN_ASAN  ,  TMP_RISK , TMP_MS_ID )
VALUES(@DEF_GRUBU , @YIRMI_GUN , @RISK, @INT_MS_ID)
FETCH NEXT FROM CRS_RISK_KONTROL INTO @INT_MS_ID
END
CLOSE  CRS_RISK_KONTROL
DEALLOCATE  CRS_RISK_KONTROL
-- BURADA TEMP TABLO BİTTİ



SELECT SB_SIPNO , MS_KOD , MS_UNVAN1, MS_ID , SB_ID,
 SUM((SK_BIRIM_FIYAT * SD_MIKTAR ) + ((SK_BIRIM_FIYAT * SD_MIKTAR ) * (SD_KDV/100))) SIPARIS_TUTARI ,
 SUM((SK_BIRIM_FIYAT * ISNULL(SD_CIK_MIKTAR,0)) + ((SK_BIRIM_FIYAT * ISNULL(SD_CIK_MIKTAR,0)) * (SD_KDV/100))) CIKILAN_TUTAR ,
 SUM((SK_BIRIM_FIYAT * (SD_MIKTAR - ISNULL(SD_CIK_MIKTAR,0))) + ((SK_BIRIM_FIYAT * (SD_MIKTAR - ISNULL(SD_CIK_MIKTAR,0))) * (SD_KDV/100))) BEKLEYEN_TUTAR , 
ACIKLAMA = CASE 
WHEN( SELECT TMP_RISK FROM #TMP_RISK_KONTROL WHERE TMP_MS_ID = MS_ID ) = 1 THEN 'RİSK AŞIMI ' 
ELSE ''
END
,
RISK_AŞIMI = CASE 
WHEN(
(
  ISNULL((SELECT SUM(ISNULL(TEM_KBL_TUT,0)) FROM IS_TEMINATLAR WITH (NOLOCK) WHERE TEM_MS_ID= MS_BY_ID  AND TEM_TURU=1 AND  (TEM_STATUS In (2,5)) AND ((TEM_SIRKET_TIP = MS_SIRKET_KOD AND TEM_MEK_TIPI = 0) OR (TEM_MEK_TIPI = 1)) ),0)
+ ISNULL((SELECT SUM(ISNULL(KBL_TUTAR,0)) FROM IS_ITM_GMEN WITH (NOLOCK) WHERE TEM_TURU = 2 AND BY_ID = MS_BY_ID AND (STATUS In (2,5)) AND ((ITM_SIRKET_TIP = MS_SIRKET_KOD AND ITM_MEK_TIPI = 0) OR (ITM_MEK_TIPI = 1))),0)
+ ISNULL((SELECT SUM(ISNULL(AKR_KLBLR_LIMIT,0)) FROM IS_ACIK_KREDILER_AKTIF WITH (NOLOCK) WHERE AKR_MSBY_ID = MS_BY_ID ),0)
+ ISNULL((SELECT SUM(ISNULL(YKR_MIKTAR,0)) FROM IS_YONETIM_KREDISI WITH (NOLOCK) WHERE YKR_MSBY_ID = MS_BY_ID),0)
+ ISNULL((SELECT SUM(ISNULL(BKR_ONY_MIKTAR,0)) FROM IS_BOLGE_KREDISI WITH (NOLOCK) WHERE BKR_MSBY_ID = MS_BY_ID),0)
+ ISNULL((SELECT SUM(ISNULL(KRD_MIKTAR,0)) FROM IS_KREDILER WITH (NOLOCK) WHERE KRD_MSBY_ID = MS_BY_ID),0)
) 
-
( 
  ISNULL((SELECT SUM(ISNULL(CD_TUTAR,0)) FROM MS_CEK_DETAY  WITH (NOLOCK) WHERE CD_SON_DURUM IN((SELECT CST_BANKA_DURUM_ID FROM MS_CS_TANIMLARI  WITH (NOLOCK) ),(SELECT CST_PORTFOY_DURUM_ID FROM  MS_CS_TANIMLARI  WITH (NOLOCK) )) AND CD_ILK_MUST_ID= MS_ID),0)
+ ISNULL((SELECT SUM(ISNULL(STD_TUTAR,0)) FROM MS_SENET_DETAY  WITH (NOLOCK)  WHERE STD_SON_DURUM IN((SELECT CST_BANKA_DURUM_ID FROM MS_CS_TANIMLARI  WITH (NOLOCK)  ),(SELECT CST_PORTFOY_DURUM_ID FROM MS_CS_TANIMLARI  WITH (NOLOCK)  )) AND STD_MUST_ID= MS_ID),0)
+ ISNULL((SELECT SUM((ISNULL(SVD_TUTAR,0) / ISNULL(SVD_MIKTAR,0)) * (ISNULL(SVD_MIKTAR,0) - ISNULL(ADET,0)) ) FROM MS_BEKLEYEN_SEVKEMIRLERI_2 WITH (NOLOCK) WHERE ISNULL(SVD_MIKTAR,0) - ISNULL(ADET,0)>0 AND SVD_MUST_ID= MS_ID),0)  
+ ISNULL((SELECT SUM(ISNULL(MH_BORC, 0) - ISNULL(MH_ALACAK, 0)) FROM MS_CARI_HAREKET WITH (NOLOCK) WHERE MH_SIRKET_KOD = MS_SIRKET_KOD AND MH_CK_TIP = 1 AND MH_MUST_ID = MS_ID), 0) 
--+ ISNULL((SELECT SUM(ISNULL(CK_TOP_BORC,0)- ISNULL(CK_TOP_ALACAK,0)) FROM MS_CARI_KART WITH (NOLOCK) WHERE CK_MUST_ID= MS_ID),0)
+ ISNULL((SELECT (ISNULL((SELECT SUM(SVD_TUTAR) FROM MS_SEVKEMRI_DETAY WITH (NOLOCK) WHERE SVD_SIRKET_KOD = MS_SIRKET_KOD AND SVD_MUST_ID = MS_ID),0) - 
         ISNULL((SELECT SUM(FB_NET_TUTAR) FROM MS_FATURA_BASLIK WITH (NOLOCK) WHERE FB_SIRKET_KOD =  MS_SIRKET_KOD AND FB_MUST_ID = MS_ID AND FB_PRN_FLAG > 0 AND FB_TIP = '2' AND ISNULL(FB_MAMUL,0) = 1),0)) +
         ISNULL((SELECT SUM(FB_NET_TUTAR) FROM MS_FATURA_BASLIK WITH (NOLOCK) WHERE FB_SIRKET_KOD =  MS_SIRKET_KOD AND FB_MUST_ID = MS_ID AND FB_PRN_FLAG = 0 AND FB_TIP = '2' AND ISNULL(FB_MAMUL,0) = 0),0) ),0)
+ ISNULL((SELECT SUM(MSB.NET_TUTAR) FROM MS_BEKLEYEN_SIPARISLER_KREDI_RISK_PERFORMANS_RAPORU MSB WHERE MSB.SB_MUST_ID = MS_ID),0) 
) ) < 0 THEN 
((
  ISNULL((SELECT SUM(ISNULL(TEM_KBL_TUT,0)) FROM IS_TEMINATLAR WITH (NOLOCK) WHERE TEM_MS_ID= MS_BY_ID  AND TEM_TURU=1 AND  (TEM_STATUS In (2,5)) AND ((TEM_SIRKET_TIP = MS_SIRKET_KOD AND TEM_MEK_TIPI = 0) OR (TEM_MEK_TIPI = 1)) ),0)
+ ISNULL((SELECT SUM(ISNULL(KBL_TUTAR,0)) FROM IS_ITM_GMEN WITH (NOLOCK) WHERE TEM_TURU = 2 AND BY_ID = MS_BY_ID AND (STATUS In (2,5)) AND ((ITM_SIRKET_TIP = MS_SIRKET_KOD AND ITM_MEK_TIPI = 0) OR (ITM_MEK_TIPI = 1))),0)
+ ISNULL((SELECT SUM(ISNULL(AKR_KLBLR_LIMIT,0)) FROM IS_ACIK_KREDILER_AKTIF WITH (NOLOCK) WHERE AKR_MSBY_ID = MS_BY_ID ),0)
+ ISNULL((SELECT SUM(ISNULL(YKR_MIKTAR,0)) FROM IS_YONETIM_KREDISI WITH (NOLOCK) WHERE YKR_MSBY_ID = MS_BY_ID),0)
+ ISNULL((SELECT SUM(ISNULL(BKR_ONY_MIKTAR,0)) FROM IS_BOLGE_KREDISI WITH (NOLOCK) WHERE BKR_MSBY_ID = MS_BY_ID),0)
+ ISNULL((SELECT SUM(ISNULL(KRD_MIKTAR,0)) FROM IS_KREDILER WITH (NOLOCK) WHERE KRD_MSBY_ID = MS_BY_ID),0)
)
-
( 
  ISNULL((SELECT SUM(ISNULL(CD_TUTAR,0)) FROM MS_CEK_DETAY  WITH (NOLOCK) WHERE CD_SON_DURUM IN((SELECT CST_BANKA_DURUM_ID FROM MS_CS_TANIMLARI  WITH (NOLOCK) ),(SELECT CST_PORTFOY_DURUM_ID FROM  MS_CS_TANIMLARI  WITH (NOLOCK) )) AND CD_ILK_MUST_ID= MS_ID),0)
+ ISNULL((SELECT SUM(ISNULL(STD_TUTAR,0)) FROM MS_SENET_DETAY  WITH (NOLOCK)  WHERE STD_SON_DURUM IN((SELECT CST_BANKA_DURUM_ID FROM MS_CS_TANIMLARI  WITH (NOLOCK)  ),(SELECT CST_PORTFOY_DURUM_ID FROM MS_CS_TANIMLARI  WITH (NOLOCK)  )) AND STD_MUST_ID= MS_ID),0)
+ ISNULL((SELECT SUM((ISNULL(SVD_TUTAR,0) / ISNULL(SVD_MIKTAR,0)) * (ISNULL(SVD_MIKTAR,0) - ISNULL(ADET,0)) ) FROM MS_BEKLEYEN_SEVKEMIRLERI_2 WITH (NOLOCK) WHERE ISNULL(SVD_MIKTAR,0) - ISNULL(ADET,0)>0 AND SVD_MUST_ID= MS_ID),0)  
+ ISNULL((SELECT SUM(ISNULL(MH_BORC, 0) - ISNULL(MH_ALACAK, 0)) FROM MS_CARI_HAREKET WITH (NOLOCK) WHERE MH_SIRKET_KOD = MS_SIRKET_KOD AND MH_CK_TIP = 1 AND MH_MUST_ID = MS_ID), 0) 
--+ ISNULL((SELECT SUM(ISNULL(CK_TOP_BORC,0)- ISNULL(CK_TOP_ALACAK,0)) FROM MS_CARI_KART WITH (NOLOCK) WHERE CK_MUST_ID= MS_ID),0)
+ ISNULL((SELECT (ISNULL((SELECT SUM(SVD_TUTAR) FROM MS_SEVKEMRI_DETAY WITH (NOLOCK) WHERE SVD_SIRKET_KOD = MS_SIRKET_KOD AND SVD_MUST_ID = MS_ID),0) - 
         ISNULL((SELECT SUM(FB_NET_TUTAR) FROM MS_FATURA_BASLIK WITH (NOLOCK) WHERE FB_SIRKET_KOD =  MS_SIRKET_KOD AND FB_MUST_ID = MS_ID AND FB_PRN_FLAG > 0 AND FB_TIP = '2' AND ISNULL(FB_MAMUL,0) = 1),0)) +
         ISNULL((SELECT SUM(FB_NET_TUTAR) FROM MS_FATURA_BASLIK WITH (NOLOCK) WHERE FB_SIRKET_KOD =  MS_SIRKET_KOD AND FB_MUST_ID = MS_ID AND FB_PRN_FLAG = 0 AND FB_TIP = '2' AND ISNULL(FB_MAMUL,0) = 0),0) ),0)
+ ISNULL((SELECT SUM(MSB.NET_TUTAR) FROM MS_BEKLEYEN_SIPARISLER_KREDI_RISK_PERFORMANS_RAPORU MSB WHERE MSB.SB_MUST_ID = MS_ID),0) 
)) * (-1)
ELSE 0
END
,
(ISNULL((SELECT KLT_ACIKLAMA
FROM MS_KILIT_DETAY , MS_KILIT 
WHERE MKD_ONAY = 1 
	AND MKD_KLT_ID = 1 
	AND KLT_ID = MKD_KLT_ID
	AND MKD_MS_ID = MS_ID ),'')
+ ' '+
ISNULL((SELECT KLT_ACIKLAMA
FROM MS_KILIT_DETAY , MS_KILIT 
WHERE MKD_ONAY = 1 
	AND MKD_KLT_ID = 7 
	AND KLT_ID = MKD_KLT_ID
	AND MKD_MS_ID = MS_ID ),'')

+ ' '+
ISNULL((SELECT KLT_ACIKLAMA
FROM MS_KILIT_DETAY , MS_KILIT 
WHERE MKD_ONAY = 1 
	AND MKD_KLT_ID = 8
	AND KLT_ID = MKD_KLT_ID
	AND MKD_MS_ID = 1 ),'')
+ ' '+
ISNULL((SELECT KLT_ACIKLAMA
FROM MS_KILIT_DETAY , MS_KILIT 
WHERE MKD_ONAY = 1 
	AND MKD_KLT_ID = 9
	AND KLT_ID = MKD_KLT_ID
	AND MKD_MS_ID = MS_ID ),'')
+ ' '+
ISNULL((SELECT KLT_ACIKLAMA
FROM MS_KILIT_DETAY , MS_KILIT 
WHERE MKD_ONAY = 1 
	AND MKD_KLT_ID = 10
	AND KLT_ID = MKD_KLT_ID
	AND MKD_MS_ID = MS_ID ),'')
+ ' '+
ISNULL((SELECT KLT_ACIKLAMA
FROM MS_KILIT_DETAY , MS_KILIT 
WHERE MKD_ONAY = 1 
	AND MKD_KLT_ID = 11
	AND KLT_ID = MKD_KLT_ID
	AND MKD_MS_ID = MS_ID ),'')
+ ' '+

ISNULL((SELECT KLT_ACIKLAMA
FROM MS_KILIT_DETAY , MS_KILIT 
WHERE MKD_ONAY = 1 
	AND MKD_KLT_ID = 12
	AND KLT_ID = MKD_KLT_ID
	AND MKD_MS_ID = MS_ID ),'')
+ ' '+
ISNULL((SELECT KLT_ACIKLAMA
FROM MS_KILIT_DETAY , MS_KILIT 
WHERE MKD_ONAY = 1 
	AND MKD_KLT_ID = 14
	AND KLT_ID = MKD_KLT_ID
	AND MKD_MS_ID = MS_ID ),'')) KILIT_DETAY ,
ONAY = CASE 
WHEN( SELECT COUNT(*) FROM #TMP_RISK_KONTROL WHERE TMP_MS_ID = MS_ID AND ((TMP_RISK = 1) OR (TMP_DEF_GRUBU = 1) OR (TMP_YIRMI_GUN_ASAN = 1) )
  )  > 0 THEN 0 
ELSE 1
END
,
CONVERT(CHAR(150),'')  ONAY_ACIKLAMASI ,
KARSILIKSIZ = CASE 
  WHEN  ISNULL((SELECT SUM(ISNULL(MH_BORC,0) - ISNULL(MH_ALACAK,0)) FROM MS_CARI_HAREKET WHERE MH_CK_TIP = 2 AND  MH_MUST_ID = MS_ID),0) > 0 THEN
                  ISNULL((SELECT SUM(ISNULL(MH_BORC,0) - ISNULL(MH_ALACAK,0)) FROM MS_CARI_HAREKET WHERE MH_CK_TIP = 2 AND  MH_MUST_ID = MS_ID) ,0)
    ELSE 
         0
END
,
 PROTESTO = CASE 
  WHEN  ISNULL((SELECT SUM(ISNULL(MH_BORC,0) - ISNULL(MH_ALACAK,0)) FROM MS_CARI_HAREKET WHERE MH_CK_TIP = 3 AND  MH_MUST_ID = MS_ID),0)  >0 THEN
                  ISNULL((SELECT SUM(ISNULL(MH_BORC,0) - ISNULL(MH_ALACAK,0)) FROM MS_CARI_HAREKET WHERE MH_CK_TIP = 3 AND  MH_MUST_ID = MS_ID),0) 
    ELSE 
         0
END
,
 AVUKAT=  CASE 
  WHEN  ISNULL((SELECT SUM(ISNULL(MH_BORC,0) - ISNULL(MH_ALACAK,0)) FROM MS_CARI_HAREKET WHERE MH_CK_TIP = 4 AND  MH_MUST_ID = MS_ID),0)  >0 THEN
                  ISNULL((SELECT SUM(ISNULL(MH_BORC,0) - ISNULL(MH_ALACAK,0)) FROM MS_CARI_HAREKET WHERE MH_CK_TIP = 4 AND  MH_MUST_ID = MS_ID) ,0)
    ELSE 
         0
END
   ,
DEF_RISK = CASE
  WHEN ( (SELECT TMP_DEF_GRUBU FROM #TMP_RISK_KONTROL WHERE TMP_MS_ID = MS_ID)  = '1' )  AND  ((SELECT TMP_YIRMI_GUN_ASAN FROM #TMP_RISK_KONTROL WHERE TMP_MS_ID = MS_ID)   = '1' )   THEN
       'DEF GRUBU VE YIRMI GUNU AŞAN BAKIYESI VAR'
  WHEN ( (SELECT TMP_DEF_GRUBU FROM #TMP_RISK_KONTROL WHERE TMP_MS_ID = MS_ID)  = '0' )  AND  ((SELECT TMP_YIRMI_GUN_ASAN FROM #TMP_RISK_KONTROL WHERE TMP_MS_ID = MS_ID)   = '1' )   THEN
      'YIRMI GUNU AŞAN BAKIYESI VAR'
  WHEN ( (SELECT TMP_DEF_GRUBU FROM #TMP_RISK_KONTROL WHERE TMP_MS_ID = MS_ID)  = '1' )  AND  ((SELECT TMP_YIRMI_GUN_ASAN FROM #TMP_RISK_KONTROL WHERE TMP_MS_ID = MS_ID)   = '0' )   THEN
      'DEF GURUBU'
  WHEN ( (SELECT TMP_DEF_GRUBU FROM #TMP_RISK_KONTROL WHERE TMP_MS_ID = MS_ID)  = '0' )  AND  ((SELECT TMP_YIRMI_GUN_ASAN FROM #TMP_RISK_KONTROL WHERE TMP_MS_ID = MS_ID)   = '0' )   THEN
       '   '

END 

FROM MS_SIPARIS_DETAY WITH(NOLOCK) ,
	MS_SIPARIS_BASLIK WITH(NOLOCK),
	GN_MUSTERILER WITH(NOLOCK)
WHERE ISNULL(SB_SEVK_EDILDI,0) = 0 
	AND ISNULL(SD_CIK_MIKTAR,0) < SD_MIKTAR 
	AND SD_SB_ID = SB_ID
	AND MS_ID = SB_MUST_ID
	AND ISNULL(SB_SEVK_EDILEBILIR,0)  = 0
           
GROUP BY SD_SB_ID , SB_SIPNO,MS_KOD , MS_UNVAN1 , MS_BY_ID , MS_SIRKET_KOD , MS_ID , SB_ID


 --BTM                         SELECT SUM(ISNULL(TEM_KBL_TUT,0)) FROM IS_TEMINATLAR WITH (NOLOCK) WHERE TEM_MS_ID= MS_BY_ID  AND TEM_TURU=1 AND  (TEM_STATUS In (2,5)) AND ((TEM_SIRKET_TIP = MS_SIRKET_KOD' AND TEM_MEK_TIPI = 0) OR (TEM_MEK_TIPI = 1)) 
 --ITM                          SELECT SUM(ISNULL(KBL_TUTAR,0)) FROM IS_ITM_GMEN WITH (NOLOCK) WHERE BY_ID = MS_BY_ID AND TEM_TURU = 2 AND (STATUS In (2,5)) AND ((ITM_SIRKET_TIP = MS_SIRKET_KOD AND ITM_MEK_TIPI = 0) OR (ITM_MEK_TIPI = 1))

-- AÇIK KREDİ             SELECT SUM(ISNULL(AKR_KLBLR_LIMIT,0)) FROM IS_ACIK_KREDILER_AKTIF WITH (NOLOCK) WHERE AKR_MSBY_ID = MS_BY_ID
-- YONETİM KREDİSİ SELECT SUM(ISNULL(YKR_MIKTAR,0)) FROM IS_YONETIM_KREDISI WITH (NOLOCK) WHERE YKR_MSBY_ID = MS_BY_ID
-- BOLGE_KREDISI     SELECT SUM(ISNULL(BKR_ONY_MIKTAR,0)) FROM IS_BOLGE_KREDISI WITH (NOLOCK) WHERE BKR_MSBY_ID = MS_BY_ID
-- DIGER KREDILER   SELECT SUM(ISNULL(KRD_MIKTAR,0)) FROM IS_KREDILER WITH (NOLOCK) WHERE KRD_MSBY_ID = MS_BY_ID

-- TAHSİL EDİLMEMİŞ ÇEK        SELECT SUM(ISNULL(CD_TUTAR,0)) FROM MS_CEK_DETAY  WITH (NOLOCK) WHERE CD_SON_DURUM IN((SELECT CST_BANKA_DURUM_ID FROM MS_CS_TANIMLARI  WITH (NOLOCK) ),(SELECT CST_PORTFOY_DURUM_ID FROM  MS_CS_TANIMLARI  WITH (NOLOCK) )) AND CD_ILK_MUST_ID=MS_ID
-- TAHSİL EDİLMEMİŞ SENET   SELECT SUM(ISNULL(STD_TUTAR,0)) FROM MS_SENET_DETAY  WITH (NOLOCK)  WHERE STD_SON_DURUM IN((SELECT CST_BANKA_DURUM_ID FROM MS_CS_TANIMLARI  WITH (NOLOCK)  ),(SELECT CST_PORTFOY_DURUM_ID FROM MS_CS_TANIMLARI  WITH (NOLOCK)  )) AND STD_MUST_ID= MS_ID

-- BEKLEYEN SİPARİŞ          SELECT SUM(ISNULLl(NET_TUTAR,0)) FROM  MS_BEKLEYEN_SIPARISLER_KREDI_RISK_PERFORMANS_RAPORU WHERE SB_MUST_ID= MS_ID
-- BEKLEYEN SEVK_EMRI    SELECT SUM((ISNULL(SVD_TUTAR,0) / ISNULL(SVD_MIKTAR,0)) * (ISNULL(SVD_MIKTAR,0) - ISNULL(ADET,0)) ) FROM MS_BEKLEYEN_SEVKEMIRLERI_2 WHERE ISNULL(SVD_MIKTAR,0) - ISNULL(ADET,0)>0 AND SVD_MUST_ID= MS_ID
-- FATURASI KESILMEMIS IRSALIYE SELECT (ISNULL((SELECT SUM(SVD_TUTAR) FROM MS_SEVKEMRI_DETAY WITH (NOLOCK) WHERE SVD_SIRKET_KOD = MS_SIRKET_KOD AND SVD_MUST_ID = MS_ID),0) - 
--         ISNULL((SELECT SUM(FB_NET_TUTAR) FROM MS_FATURA_BASLIK WITH (NOLOCK) WHERE FB_SIRKET_KOD = MS_SIRKET_KOD AND FB_MUST_ID = MS_ID AND FB_PRN_FLAG > 0 AND FB_TIP = '2' AND ISNULL(FB_MAMUL,0) = 1),0)) +
--         ISNULL((SELECT SUM(FB_NET_TUTAR) FROM MS_FATURA_BASLIK WITH (NOLOCK) WHERE FB_SIRKET_KOD = MS_SIRKET_KOD AND FB_MUST_ID = MS_ID AND FB_PRN_FLAG = 0 AND FB_TIP = '2' AND ISNULL(FB_MAMUL,0) = 0),0)

--AÇIK HESAP select SUM(Isnull(CK_TOP_BORC,0)-Isnull(CK_TOP_ALACAK,0)) from MS_CARI_KART where CK_MUST_ID='+ms_Id

DROP TABLE  #TMP_RISK_KONTROL
GO

FOR SELECT Kullanımına ait Interbase Örneği,

Kod: Tümünü seç

SET TERM ^^ ;
CREATE PROCEDURE STP_COKLU_STOK_DEGERLEMESI (VAR_B_TAR TimeStamp, VAR_S_TAR TimeStamp, VAR_BASE_DATE TimeStamp, VAR_KLN_ID Integer) AS
DECLARE VARIABLE INT_TMP_ID INTEGER ;
DECLARE VARIABLE INT_STK_ID INTEGER ;
DECLARE VARIABLE INT_MIKTAR INTEGER ;
DECLARE VARIABLE INT_KLN_ID INTEGER ;
DECLARE VARIABLE DBL_FIFO DOUBLE PRECISION ;
DECLARE VARIABLE DBL_LIFO DOUBLE PRECISION ;
DECLARE VARIABLE DBL_AO DOUBLE PRECISION ;
BEGIN
  FOR SELECT TMP_ID, TMP_STK_ID
  FROM TMP_STOK_DEGERLEMESI
  WHERE TMP_KLN_ID = :VAR_KLN_ID
  INTO :INT_TMP_ID, :INT_STK_ID
  DO
  BEGIN
    EXECUTE PROCEDURE STP_STOK_DEGERLEMESI :INT_STK_ID, :VAR_B_TAR, :VAR_S_TAR, :VAR_BASE_DATE RETURNING_VALUES :INT_MIKTAR, :DBL_FIFO, :DBL_LIFO, :DBL_AO ;
    UPDATE TMP_STOK_DEGERLEMESI
    SET TMP_MIKTAR = :INT_MIKTAR,
        TMP_FIFO = :DBL_FIFO,
        TMP_LIFO = :DBL_LIFO,
        TMP_AO = :DBL_AO,
        TMP_KLN_ID = :VAR_KLN_ID
    WHERE TMP_ID = :INT_TMP_ID ;
  END
END
^^
SET TERM ; ^^
Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Cevapla