Variable is not filled in procedure

1

Good morning. I'm running the procedure below, which validates whether the load should run or not, and if it is not possible to run, it returns an error message stating why it did not run:

declare @dtAtual date,
        @dtCarga date,
        @hrAtual varchar(8),
        @stCarga varchar(20),
        @flPass bit = 0,
        @dtAtualizacaoYC date,
        @dsMensagemErro varchar(500)

select @dtCarga = max(DT_CARGA) from DBM_ETL..LOG_DISPONIBILIDADE_CARGA_CLIENTES_BOLETOS
select @dtAtual = getdate()
select @dtAtualizacaoYC = MAX(dtCarga) from DBM_YC..ycFatosBoletos

if(@dtAtualizacaoYC < @dtAtual or @dtAtualizacaoYC is null)
begin

    if(@dtAtual = @dtCarga)
    BEGIN

        select @stCarga = STATUS_CARGA FROM LOG_DISPONIBILIDADE_CARGA_CLIENTES_BOLETOS WITH(NOLOCK)
        where DT_CARGA = @dtCarga

        WHILE(@stCarga in ('EM ANDAMENTO','PROCESSANDO'))
        BEGIN

            select @hrAtual = CONVERT(varchar(8),convert(time,getdate()))

            if(@flPass = 0 and @hrAtual >= '12:00:00')
            begin       
                SET @dsMensagemErro = 'O processo está a muito tempo em execução e não há disponibilidade na tabela DBM_ETL.DBO.TMP_CARGA_CLIENTES_BOLETOS. Necessário verificar com o responsável pela atualização.'
                BREAK;
            end

            WAITFOR DELAY '00:05:00'

            select @stCarga = STATUS_CARGA FROM DBM_ETL..LOG_DISPONIBILIDADE_CARGA_CLIENTES_BOLETOS WITH(NOLOCK)
            where DT_CARGA = @dtCarga

        END


        IF(@stCarga LIKE '%CONCLU[ÍI]DO%')
        BEGIN
            SET @flPass = 1
        END 
        ELSE
        BEGIN
            SET @dsMensagemErro = 'O status de processamento na tabela LOG_DISPONIBILIDADE_CARGA_CLIENTES_BOLETOS foi atualizado, porém não está como "CONCLUÍDO". Status atualizado na tabela: '+@stCarga+''
        END                 
    END
    ELSE
    BEGIN       
        SET @dsMensagemErro = 'O processo de Carga da tabela TMP_CARGA_CLIENTES_BOLETOS não foi iniciado, ou o status de processo não foi inserido na tabela LOG_DISPONIBILIDADE_CARGA_CLIENTES_BOLETOS'
    END


end

select @flPass as flPass, @dtCarga as dtCarga, @dsMensagemErro as dsMensagemErro

In this case, the LOG_DISPONIBILIDADE_CARGA_CLIENTES_BOLETOS table is with status_carga = CONCLUÍDO and the date is less than the current date. In this case, you should drop the last IF , and display the message:

  

"The Load process of the TMP_CARGA_CLIENTES_BOLETOS table was not   started, or the process status was not entered in the table    LOG_DISPONIBILIDADE_CARGA_CLIENTES_BOLETOS "

However, the variable dsMensagemErro is coming null, it is not displaying any messages.

Would anyone have an idea why this variable is not being populated, where query fits the conditions of the last IF ?

EDIT: I already found out what it was, guys. The variable dtAuthenticationYC was null because the DT_CARGA field of the DBM_YC..ycBatFiles table was null. I made an update and put the DT_CARGA = current date and it was. I ate the ball. Thanks for the answers!

    
asked by anonymous 27.09.2018 / 16:54

0 answers