Genel Bilgiler

SQL Server
Stored Procedure
✅ Etkilenmez
23.12.2025 07:15
23.12.2025 16:10

Notlar

Düzenle

Henüz not eklenmemiş.

+ Not ekle

İstatistikler

0
Kod Analizi
107
Satır
2
Kullandığı
0
Kullanan

Kullandığı Nesneler (2)

Kullanan Nesneler (0)

Bu nesneyi kullanan yok

Bağımlılık Ağacı

Etki Ağacı

Bu nesneyi kullanan yok

Tam SQL Kodu

Düzenle

CREATE PROC [dbo].[ISKONTO_ORANLARI]
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @REF    INT;
    DECLARE @SAY    INT = 1;
    DECLARE @TOP    INT;
    DECLARE @TURU   VARCHAR(250);

    DECLARE @FIS    DECIMAL(18,2) = 0;
    DECLARE @PESIN  DECIMAL(18,2) = 0;

    ----------------------------------------------------------------------------
    -- 1) Öncelikle, döngüyle [EKISKONTO_ORANINA_GORE_SIRALI_CARI_LISTE] 
    --    tablosundaki kayitlari okuyup LG_XT1015_011'i güncelliyoruz.
    ----------------------------------------------------------------------------

    SELECT @TOP = COUNT(*) 
    FROM dbo.[EKISKONTO_ORANINA_GORE_SIRALI_CARI_LISTE];

    WHILE @SAY <= @TOP
    BEGIN
        SELECT 
            @REF  = LOGICALREF,
            @TURU = TURU
        FROM dbo.[EKISKONTO_ORANINA_GORE_SIRALI_CARI_LISTE]
        WHERE SIRA = @SAY;

        -- Her kayit için varsayilanlari sifirla
        SET @FIS   = 0;
        SET @PESIN = 0;

        -- TURU bos degilse parse et
        IF (@TURU IS NOT NULL AND LTRIM(RTRIM(@TURU)) <> '')
        BEGIN
            -- '+KDV' ifadesini çikar
            SET @TURU = REPLACE(@TURU, '+KDV', '');

            -- FIS:xx => FIS
            IF CHARINDEX('FIS:', @TURU) > 0
            BEGIN
                SET @FIS = dbo.ufn_GET_NUMERIC_PORTION_AFTER_TAG(@TURU, 'FIS:');
            END
            ELSE IF CHARINDEX('FIS', @TURU) > 0
            BEGIN
                -- 'FIS' var ama sayi yoksa => 0
                SET @FIS = 0;
            END

            -- PESIN:yy => PESIN
            IF CHARINDEX('PESIN:', @TURU) > 0
            BEGIN
                SET @PESIN = dbo.ufn_GET_NUMERIC_PORTION_AFTER_TAG(@TURU, 'PESIN:');
            END
            ELSE IF CHARINDEX('PESIN', @TURU) > 0
            BEGIN
                -- 'PESIN' var ama sayi yoksa => 0
                SET @PESIN = 0;
            END

            -- :X ISKONTO => eger ne FIS ne PESIN bulunmadiysa -> FIS'e yazalim
            IF (@FIS = 0 AND @PESIN = 0 AND CHARINDEX('ISKONTO', @TURU) > 0)
            BEGIN
                SET @FIS = dbo.ufn_GET_NUMERIC_PORTION_BEFORE_TEXT(@TURU, 'ISKONTO');
            END
        END

        -- Güncelleme: Bu REF (PARLOGREF) kaydi LG_XT1015_011 tablosunda set ediliyor
        UPDATE dbo.LG_XT1015_011
        SET TURU  = @TURU,    -- Isterseniz burada da TURU'yu saklayabilirsiniz
            FIS   = @FIS,
            PESIN = @PESIN,
            FIS2  = 0,
            PESIN2= 0,
            TUM   = 0,
            SART  = 0
        WHERE PARLOGREF = @REF;

        SET @SAY = @SAY + 1;
    END

    ----------------------------------------------------------------------------
    -- 2) EKISKONTO_ORANINA_GORE_SIRALI_CARI_LISTE tablosunda OLMAYAN 
    --    (yani PARLOGREF eslesmesi olmayan) LG_XT1015_011 kayitlarini sifirla:
    --
    --    - TURU sütunu bos
    --    - FIS, PESIN, FIS2, PESIN2, TUM, SART alanlari 0
    ----------------------------------------------------------------------------

    UPDATE dbo.LG_XT1015_011
    SET TURU  = '',   -- Bos yapiyoruz
        FIS   = 0,
        PESIN = 0,
        FIS2  = 0,
        PESIN2= 0,
        TUM   = 0,
        SART  = 0
    WHERE PARLOGREF NOT IN 
    (
        SELECT LOGICALREF 
        FROM dbo.[EKISKONTO_ORANINA_GORE_SIRALI_CARI_LISTE]
    );

END

Kodun Çalışma Mantığı (Adım Adım)

Analiz Ekle/Düzenle

Henüz bu nesne için bir analiz girilmemiş.

İlk Analizi Ekle