Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.01 KB | None | 0 0
  1. DECLARE @DIA_UTIL INT
  2. DECLARE @PROXIMO_DIA_UTIL VARCHAR(8)
  3. DECLARE @PRIMEIRO_DIA_UTIL_MES_SEGUINTE VARCHAR(8)
  4.  
  5. /*****************************************************************************************************************/
  6. --VERIFICA DIAS ÚTEIS
  7. /*****************************************************************************************************************/
  8. --TABELA DIAS UTEIS
  9. IF OBJECT_ID('TEMPDB..#DIA_UTEIS_MES_ATUAL') IS NOT NULL
  10. DROP TABLE #DIA_UTEIS_MES_ATUAL
  11.  
  12. SELECT
  13. ID = ROW_NUMBER() OVER ( PARTITION BY CONVERT(VARCHAR(6),DATA,112) ORDER BY CONVERT(VARCHAR(6),DATA,112) )
  14. ,DATA
  15. INTO
  16. #DIA_UTEIS_MES_ATUAL
  17. FROM
  18. DB_PGC_PRODUCAO..TB_ESTRUTURA_CALENDARIO
  19. WHERE
  20. CONVERT(VARCHAR(6),DATA,112) = CONVERT(VARCHAR(6),GETDATE(),112)
  21. AND DIA_UTIL = 1
  22.  
  23. --DIA UTIL DIA PROCESSAMENTO
  24. SELECT @DIA_UTIL = ID FROM #DIA_UTEIS_MES_ATUAL WHERE DATA = CONVERT(VARCHAR(10),GETDATE(),112)
  25.  
  26. --PROXIMO DIA ÚTIL
  27. SELECT @PROXIMO_DIA_UTIL = CONVERT(VARCHAR(8),DATA,112) FROM #DIA_UTEIS_MES_ATUAL WHERE ID = @DIA_UTIL + 1 --PRÓXIMO DIA ÚTIL
  28.  
  29. --PRIMEIRO DIA ÚTIL DO MÊS SEGUINTE
  30. SELECT TOP 1
  31. @PRIMEIRO_DIA_UTIL_MES_SEGUINTE = CONVERT(VARCHAR(8),DATA,112)
  32. FROM
  33. DB_PGC_PRODUCAO..TB_ESTRUTURA_CALENDARIO
  34. WHERE DIA_UTIL = 1
  35. AND CONVERT(VARCHAR(6),DATA,112) = CONVERT(VARCHAR(6),DATEADD(M,1,GETDATE()),112)
  36. ORDER BY 1
  37.  
  38. /*****************************************************************************************************************/
  39. --VERIFICA QUAL O DIA ÚTIL DO DIA DO PROCESSAMENTO
  40. /*****************************************************************************************************************/
  41. --O ARQUIVO PODE SER DISPONIBILIZADO ATÉ O 5ºDIA ÚTIL, NESTE CASO O PROCESSO VERIFICAR O DIA ÚTIL, CASO AINDA NÃO
  42. --SEJA O 5º, AGENDA PARA O PRÓXIMO DIA ÚTIL, CASO SEJA E O ARQUIVO AINDA NÃO TENHA SIDO CARREGADO, EXIBE UM ERRO
  43.  
  44. --CASO ARQUIVO NÃO TENHA SIDO CARREGADO
  45. IF (
  46. SELECT TOP 1 CD_DIRETOR_DEPART
  47. FROM DB_PGC_PRODUCAO..TB_MERCADO_ALVO_CORP_EMP
  48. WHERE DT_ANOMES_REF = CONVERT(VARCHAR(6),DATEADD(M,-1,GETDATE()),112) AND DS_SEGMENTO_1 = 'EMPRESAS') IS NULL
  49. OR
  50. (
  51. SELECT TOP 1 CD_DIRETOR_DEPART
  52. FROM DB_PGC_PRODUCAO..TB_MERCADO_ALVO_CORP_EMP
  53. WHERE DT_ANOMES_REF = CONVERT(VARCHAR(6),DATEADD(M,-1,GETDATE()),112) AND DS_SEGMENTO_1 = 'CORPORATE') IS NULL
  54. BEGIN
  55. --VERIFICA DATA LIMITE DO 5º DIA ÚTIL
  56. IF (@DIA_UTIL >= 5)
  57. BEGIN
  58. --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
  59. --VERIFICADO
  60. EXEC MSDB.DBO.SP_UPDATE_JOBSCHEDULE
  61. @JOB_NAME = 'TB_MERCADO_ALVO_CORP_EMP'
  62. ,@NAME = 'MENSAL' --NOME DO JOB
  63. ,@ENABLED = 1 --HABILITA JOB
  64. ,@FREQ_TYPE = 1 --EXECUTAR APENAS 1 VEZ
  65. ,@ACTIVE_START_DATE = @PRIMEIRO_DIA_UTIL_MES_SEGUINTE --DIA QUE SERÁ EXECUTADO
  66. ,@ACTIVE_START_TIME = '070000' --07:00
  67.  
  68. RAISERROR ('ARQUIVO DE EMPRESAS E/OU CORPORATE NÃO CARREGADO! DATA LIMITE DO 5º DIA ÚTIL!',16,-1);
  69.  
  70. END
  71. ELSE
  72. BEGIN
  73. --AGENDA JOB PARA O PRÓXIMO DIA ÚTIL
  74. EXEC MSDB.DBO.SP_UPDATE_JOBSCHEDULE
  75. @JOB_NAME = 'TB_MERCADO_ALVO_CORP_EMP'
  76. ,@NAME = 'MENSAL' --NOME DO JOB
  77. ,@ENABLED = 1 --HABILITA JOB
  78. ,@FREQ_TYPE = 1 --EXECUTAR APENAS 1 VEZ
  79. ,@ACTIVE_START_DATE = @PROXIMO_DIA_UTIL --DIA QUE SERÁ EXECUTADO
  80. ,@ACTIVE_START_TIME = '070000' --07:00
  81. END
  82. END
  83.  
  84. --CASO EXECUTE COM SUCESSO, AGENDA PARA O MÊS SEGUINTE
  85.  
  86. EXEC MSDB.DBO.SP_UPDATE_JOBSCHEDULE
  87. @JOB_NAME = 'TB_MERCADO_ALVO_CORP_EMP'
  88. ,@NAME = 'MENSAL' --NOME DO JOB
  89. ,@ENABLED = 1 --HABILITA JOB
  90. ,@FREQ_TYPE = 1 --EXECUTAR APENAS 1 VEZ
  91. ,@ACTIVE_START_DATE = @PRIMEIRO_DIA_UTIL_MES_SEGUINTE --DIA QUE SERÁ EXECUTADO
  92. ,@ACTIVE_START_TIME = '070000' --07:00
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement