Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DECLARE @DIA_UTIL INT
- DECLARE @PROXIMO_DIA_UTIL VARCHAR(8)
- DECLARE @PRIMEIRO_DIA_UTIL_MES_SEGUINTE VARCHAR(8)
- /*****************************************************************************************************************/
- --VERIFICA DIAS ÚTEIS
- /*****************************************************************************************************************/
- --TABELA DIAS UTEIS
- IF OBJECT_ID('TEMPDB..#DIA_UTEIS_MES_ATUAL') IS NOT NULL
- DROP TABLE #DIA_UTEIS_MES_ATUAL
- SELECT
- ID = ROW_NUMBER() OVER ( PARTITION BY CONVERT(VARCHAR(6),DATA,112) ORDER BY CONVERT(VARCHAR(6),DATA,112) )
- ,DATA
- INTO
- #DIA_UTEIS_MES_ATUAL
- FROM
- DB_PGC_PRODUCAO..TB_ESTRUTURA_CALENDARIO
- WHERE
- CONVERT(VARCHAR(6),DATA,112) = CONVERT(VARCHAR(6),GETDATE(),112)
- AND DIA_UTIL = 1
- --DIA UTIL DIA PROCESSAMENTO
- SELECT @DIA_UTIL = ID FROM #DIA_UTEIS_MES_ATUAL WHERE DATA = CONVERT(VARCHAR(10),GETDATE(),112)
- --PROXIMO DIA ÚTIL
- SELECT @PROXIMO_DIA_UTIL = CONVERT(VARCHAR(8),DATA,112) FROM #DIA_UTEIS_MES_ATUAL WHERE ID = @DIA_UTIL + 1 --PRÓXIMO DIA ÚTIL
- --PRIMEIRO DIA ÚTIL DO MÊS SEGUINTE
- SELECT TOP 1
- @PRIMEIRO_DIA_UTIL_MES_SEGUINTE = CONVERT(VARCHAR(8),DATA,112)
- FROM
- DB_PGC_PRODUCAO..TB_ESTRUTURA_CALENDARIO
- WHERE DIA_UTIL = 1
- AND CONVERT(VARCHAR(6),DATA,112) = CONVERT(VARCHAR(6),DATEADD(M,1,GETDATE()),112)
- ORDER BY 1
- /*****************************************************************************************************************/
- --VERIFICA QUAL O DIA ÚTIL DO DIA DO PROCESSAMENTO
- /*****************************************************************************************************************/
- --O ARQUIVO PODE SER DISPONIBILIZADO ATÉ O 5ºDIA ÚTIL, NESTE CASO O PROCESSO VERIFICAR O DIA ÚTIL, CASO AINDA NÃO
- --SEJA O 5º, AGENDA PARA O PRÓXIMO DIA ÚTIL, CASO SEJA E O ARQUIVO AINDA NÃO TENHA SIDO CARREGADO, EXIBE UM ERRO
- --CASO ARQUIVO NÃO TENHA SIDO CARREGADO
- IF (
- SELECT TOP 1 CD_DIRETOR_DEPART
- FROM DB_PGC_PRODUCAO..TB_MERCADO_ALVO_CORP_EMP
- WHERE DT_ANOMES_REF = CONVERT(VARCHAR(6),DATEADD(M,-1,GETDATE()),112) AND DS_SEGMENTO_1 = 'EMPRESAS') IS NULL
- OR
- (
- SELECT TOP 1 CD_DIRETOR_DEPART
- FROM DB_PGC_PRODUCAO..TB_MERCADO_ALVO_CORP_EMP
- WHERE DT_ANOMES_REF = CONVERT(VARCHAR(6),DATEADD(M,-1,GETDATE()),112) AND DS_SEGMENTO_1 = 'CORPORATE') IS NULL
- BEGIN
- --VERIFICA DATA LIMITE DO 5º DIA ÚTIL
- IF (@DIA_UTIL >= 5)
- BEGIN
- --CASO O ARQUIVO NÃO TENHA CHEGO ATÉ O 5º DIA ÚTIL, AGENDA PARA O PROXIMO MES E EXIBE UM ERRO PARA QUE POSSA SER
- --VERIFICADO
- EXEC MSDB.DBO.SP_UPDATE_JOBSCHEDULE
- @JOB_NAME = 'TB_MERCADO_ALVO_CORP_EMP'
- ,@NAME = 'MENSAL' --NOME DO JOB
- ,@ENABLED = 1 --HABILITA JOB
- ,@FREQ_TYPE = 1 --EXECUTAR APENAS 1 VEZ
- ,@ACTIVE_START_DATE = @PRIMEIRO_DIA_UTIL_MES_SEGUINTE --DIA QUE SERÁ EXECUTADO
- ,@ACTIVE_START_TIME = '070000' --07:00
- RAISERROR ('ARQUIVO DE EMPRESAS E/OU CORPORATE NÃO CARREGADO! DATA LIMITE DO 5º DIA ÚTIL!',16,-1);
- END
- ELSE
- BEGIN
- --AGENDA JOB PARA O PRÓXIMO DIA ÚTIL
- EXEC MSDB.DBO.SP_UPDATE_JOBSCHEDULE
- @JOB_NAME = 'TB_MERCADO_ALVO_CORP_EMP'
- ,@NAME = 'MENSAL' --NOME DO JOB
- ,@ENABLED = 1 --HABILITA JOB
- ,@FREQ_TYPE = 1 --EXECUTAR APENAS 1 VEZ
- ,@ACTIVE_START_DATE = @PROXIMO_DIA_UTIL --DIA QUE SERÁ EXECUTADO
- ,@ACTIVE_START_TIME = '070000' --07:00
- END
- END
- --CASO EXECUTE COM SUCESSO, AGENDA PARA O MÊS SEGUINTE
- EXEC MSDB.DBO.SP_UPDATE_JOBSCHEDULE
- @JOB_NAME = 'TB_MERCADO_ALVO_CORP_EMP'
- ,@NAME = 'MENSAL' --NOME DO JOB
- ,@ENABLED = 1 --HABILITA JOB
- ,@FREQ_TYPE = 1 --EXECUTAR APENAS 1 VEZ
- ,@ACTIVE_START_DATE = @PRIMEIRO_DIA_UTIL_MES_SEGUINTE --DIA QUE SERÁ EXECUTADO
- ,@ACTIVE_START_TIME = '070000' --07:00
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement