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
68
Satır
3
Kullandığı
2
Kullanan

Kullandığı Nesneler (3)

USES_VIEW
USES_VIEW
REFERENCES

Kullanan Nesneler (2)

CALLS_SP
CALLS_SP

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

Etki Ağacı

Tam SQL Kodu

Düzenle
CREATE PROCEDURE PLAS_RAPOR_AYLIK_PRIM
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @SAYAC INT;
    DECLARE @PLAS VARCHAR(50);
    DECLARE @PLASREF INT;
    DECLARE @MNG VARCHAR(50);
    DECLARE @TOPLAM INT;
    DECLARE @AYLIK TINYINT;
    DECLARE @TUTAR FLOAT;
    DECLARE @CURRENT_MONTH TINYINT = MONTH(GETDATE()); -- Bu ayi al

    -- Geçici tablo yerine gerçek tablo kullaniliyor
    -- Geçici tablo olusturulmasina gerek yok

    BEGIN TRY
        -- Toplam kayit sayisini al
        SET @TOPLAM = ISNULL((SELECT COUNT(*) FROM [UNIVERSALDB].[dbo].[PLASIYERLER_IADE_SIRALI]), 0);
        SET @SAYAC = 1;
		TRUNCATE TABLE dbo.PlasRaporAylikPrim 
        -- Dis döngü
        WHILE @SAYAC <= @TOPLAM
        BEGIN
            SET @AYLIK = 1;
            
            -- Plasiyer bilgilerini al
            SELECT @PLAS = PLAS, @PLASREF = LOGICALREF, @MNG = MANG
            FROM [UNIVERSALDB].[dbo].[PLASIYERLER_IADE_SIRALI]
            WHERE SIRA = @SAYAC;

            -- Iç döngü
            WHILE @AYLIK < @CURRENT_MONTH
            BEGIN
                -- Tutari al
                SELECT @TUTAR = TRNET
                FROM dbo.PLAS_RAPOR_PRIM_LISTESI
                WHERE DEFINITION_ LIKE '%' + LTRIM(@PLAS) + '%' AND MONTH_ = @AYLIK;

                -- Gerçek tabloya ekle
                INSERT INTO dbo.PlasRaporAylikPrim 
                (MONTH_, LOGICALREF, PLS, TUTAR, MANG)
                VALUES 
                (@AYLIK, @PLASREF, @PLAS, ISNULL(@TUTAR, 0), @MNG);

                SET @TUTAR = 0;
                SET @AYLIK = @AYLIK + 1;
            END;

            SET @SAYAC = @SAYAC + 1;
        END;
    END TRY
    BEGIN CATCH
        -- Hata durumunda mesaj döndür
        DECLARE @ErrorMessage NVARCHAR(4000);
        DECLARE @ErrorSeverity INT;
        DECLARE @ErrorState INT;

        SELECT 
            @ErrorMessage = ERROR_MESSAGE(),
            @ErrorSeverity = ERROR_SEVERITY(),
            @ErrorState = ERROR_STATE();

        RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState);
    END CATCH
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