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 tableLOG_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!