· 8 years ago · Aug 31, 2018, 01:54 PM
1CREATE DEFINER=`root`@`localhost` PROCEDURE `GeraFeriado`()
2BEGIN
3
4
5
6
7 DECLARE nA INT;
8 DECLARE nB INT;
9 DECLARE nC INT;
10 DECLARE nD INT;
11 DECLARE nE INT;
12 DECLARE nF INT;
13 DECLARE nG INT;
14 DECLARE nH INT;
15 DECLARE nI INT;
16 DECLARE nK INT;
17 DECLARE nL INT;
18 DECLARE nM INT;
19 DECLARE nAno INT;
20 DECLARE nMesDePascoa INT;
21 DECLARE nDiaDePascoa INT;
22 DECLARE dtPascoa DATE;
23
24 DECLARE dtInicial DATE;
25 DECLARE dtFinal DATE;
26
27 SET dtInicial = '1990-01-01';
28 SET dtFinal = '2099-01-01';
29
30
31
32
33 DROP TABLE IF EXISTS Feriado;
34 CREATE TABLE IF NOT EXISTS Feriado (
35 nrAno SMALLINT NOT NULL,
36 nrMes SMALLINT NOT NULL,
37 nrDia SMALLINT NOT NULL,
38 tpFeriado SMALLINT(1) NULL,
39 dsFeriado VARCHAR(100) NOT NULL,
40 sgUF CHAR(2) NOT NULL
41 );
42 ALTER TABLE Feriado ADD CONSTRAINT Pk_Feriado PRIMARY KEY CLUSTERED (nrAno, nrMes, nrDia, sgUF);
43
44
45
46 TRUNCATE TABLE Feriado;
47
48
49
50
51
52 INSERT INTO Feriado
53 SELECT 0, 1, 1, 1, 'Confraternização Universal', ''
54 UNION
55 SELECT 0, 4, 21, 1, 'Tiradentes', ''
56 UNION
57 SELECT 0, 5, 1, 1, 'Dia do Trabalhador', ''
58 UNION
59 SELECT 0, 9, 7, 1, 'Independência', ''
60 UNION
61 SELECT 0, 10, 12, 1, 'Nossa Senhora Aparecida', ''
62 UNION
63 SELECT 0, 11, 2, 1, 'Finados', ''
64 UNION
65 SELECT 0, 11, 15, 1, 'Proclamação da República', ''
66 UNION
67 SELECT 0, 12, 25, 1, 'Natal', '';
68
69
70
71
72
73 INSERT INTO Feriado
74 SELECT 0, 1, 23, 2, 'Dia do evangélico', 'AC'
75 UNION
76 SELECT 0, 3, 8, 2, 'Alusivo ao Dia Internacional da Mulher', 'AC'
77 UNION
78 SELECT 0, 6, 15, 2, 'Aniversário do estado', 'AC'
79 UNION
80 SELECT 0, 9, 5, 2, 'Dia da Amazônia', 'AC'
81 UNION
82 SELECT 0, 11, 17, 2, 'Assinatura do Tratado de Petrópolis', 'AC';
83
84
85 INSERT INTO Feriado
86 SELECT 0, 6, 24, 2, 'São João', 'AL'
87 UNION
88 SELECT 0, 6, 29, 2, 'São Pedro', 'AL'
89 UNION
90 SELECT 0, 9, 16, 2, 'Emancipação polÃtica', 'AL'
91 UNION
92 SELECT 0, 11, 20, 2, 'Morte de Zumbi dos Palmares', 'AL';
93
94
95 INSERT INTO Feriado
96 SELECT 0, 3, 19, 2, 'Dia de São José, santo padroeiro do Estado do Amapá', 'AP'
97 UNION
98 SELECT 0, 9, 13, 2, 'Criação do Território Federal (Data Magna do estado)', 'AP';
99
100
101 INSERT INTO Feriado
102 SELECT 0, 9, 5, 2, 'Elevação do Amazonas à categoria de provÃncia', 'AM'
103 UNION
104 SELECT 0, 11, 20, 2, 'Dia da Consciência Negra', 'AM';
105
106
107 INSERT INTO Feriado
108 SELECT 0, 7, 2, 2, 'Independência da Bahia (Data magna do estado)', 'BA';
109
110
111 INSERT INTO Feriado
112 SELECT 0, 3, 25, 2, 'Data magna do estado (data da abolição da escravidão no Ceará)', 'CE';
113
114
115 INSERT INTO Feriado
116 SELECT 0, 4, 21, 2, 'Fundação de BrasÃlia', 'DF'
117 UNION
118 SELECT 0, 11, 30, 2, 'Dia do evangélico', 'DF';
119
120
121 INSERT INTO Feriado
122 SELECT 0, 7, 28, 2, 'Adesão do Maranhão à independência do Brasil', 'MA';
123
124
125 INSERT INTO Feriado
126 SELECT 0, 11, 20, 2, 'Dia da Consciência Negra', 'MT';
127
128
129 INSERT INTO Feriado
130 SELECT 0, 10, 11, 2, 'Criação do estado', 'MS';
131
132
133 INSERT INTO Feriado
134 SELECT 0, 4, 21, 2, 'Data magna do estado', 'MG';
135
136
137 INSERT INTO Feriado
138 SELECT 0, 8, 15, 2, 'Adesão do Grão-Pará à independência do Brasil (data magna)', 'PA';
139
140
141 INSERT INTO Feriado
142 SELECT 0, 7, 26, 2, 'Homenagem à memória do ex-presidente João Pessoa', 'PB'
143 UNION
144 SELECT 0, 8, 5, 2, 'Fundação do Estado em 1585', 'PB';
145
146
147 INSERT INTO Feriado
148 SELECT 0, 12, 19, 2, 'Emancipação polÃtica (emancipação do Paraná)', 'PR';
149
150
151 INSERT INTO Feriado
152 SELECT 0, 10, 19, 2, 'Dia do PiauÃ', 'PI';
153
154
155 INSERT INTO Feriado
156 SELECT 0, 4, 23, 2, 'Dia de São Jorge', 'RJ'
157 UNION
158 SELECT 0, 11, 20, 2, 'Dia da Consciência Negra', 'RJ';
159
160
161 INSERT INTO Feriado
162 SELECT 0, 10, 3, 2, 'Mártires de Cunhaú e Uruaçu', 'RN';
163
164
165 INSERT INTO Feriado
166 SELECT 0, 9, 20, 2, 'Proclamação da República Rio-Grandense', 'RS';
167
168
169 INSERT INTO Feriado
170 SELECT 0, 1, 4, 2, 'Criação do estado (data magna)', 'RO'
171 UNION
172 SELECT 0, 6, 18, 2, 'Dia do evangélico', 'RO';
173
174
175 INSERT INTO Feriado
176 SELECT 0, 10, 5, 2, 'Criação do estado', 'RR';
177
178
179 INSERT INTO Feriado
180 SELECT 0, 10, 5, 2, 'Dia de Santa Catarina', 'SC';
181
182
183 INSERT INTO Feriado
184 SELECT 0, 7, 9, 2, 'Revolução Constitucionalista de 1932 (Data magna do estado)', 'SP';
185
186
187 INSERT INTO Feriado
188 SELECT 0, 3, 17, 2, 'Aniversário de Aracaju', 'SE'
189 UNION
190 SELECT 0, 6, 24, 2, 'São João', 'SE'
191 UNION
192 SELECT 0, 7, 8, 2, 'Autonomia polÃtica de Sergipe', 'SE'
193 UNION
194 SELECT 0, 12, 8, 2, 'Nossa Senhora da Conceição', 'SE';
195
196
197 INSERT INTO Feriado
198 SELECT 0, 10, 5, 2, 'Criação do estado', 'TO'
199 UNION
200 SELECT 0, 3, 18, 2, 'Autonomia do Estado (criação da Comarca do Norte)', 'TO'
201 UNION
202 SELECT 0, 9, 8, 2, 'Padroeira do Estado (Nossa Senhora da Natividade)', 'TO';
203
204
205
206
207
208
209 WHILE(DATE(dtInicial) <= DATE(dtFinal)) DO
210
211 SET nAno = YEAR(dtInicial);
212
213 SET nA = nAno % 19;
214 SET nB = FLOOR(nAno / 100);
215 SET nC = nAno % 100;
216 SET nD = FLOOR(nB / 4);
217 SET nE = nB % 4;
218 SET nF = FLOOR((nB + 8) / 25);
219 SET nG = FLOOR((nB - nF + 1) / 3);
220 SET nH = (19 * nA + nB - nD - nG + 15) % 30;
221 SET nI = FLOOR(nC / 4);
222 SET nK = nC % 4;
223 SET nL = (32 + 2 * nE + 2 * nI - nH - nK) % 7;
224 SET nM = FLOOR((nA + 11 * nH + 22 * nL) / 451);
225 SET nMesDePascoa = FLOOR((nH + nL - 7 * nM + 114) / 31);
226 SET nDiaDePascoa = ((nH + nL - 7 * nM + 114) % 31) + 1;
227
228 SET dtPascoa = CONCAT(CAST(nAno AS CHAR(4)), '-', CAST(nMesDePascoa AS CHAR(2)), '-', CAST(nDiaDePascoa AS CHAR(2)));
229
230 INSERT INTO Feriado
231 SELECT YEAR(DATE_ADD(dtPascoa, INTERVAL -2 DAY)), MONTH(DATE_ADD(dtPascoa, INTERVAL -2 DAY)), DAY(DATE_ADD(dtPascoa, INTERVAL -2 DAY)), 1, 'Paixão de Cristo', '';
232
233 INSERT INTO Feriado
234 SELECT YEAR(DATE_ADD(dtPascoa, INTERVAL -48 DAY)), MONTH(DATE_ADD(dtPascoa, INTERVAL -48 DAY)), DAY(DATE_ADD(dtPascoa, INTERVAL -48 DAY)), 1, 'Carnaval', '';
235
236 INSERT INTO Feriado
237 SELECT YEAR(DATE_ADD(dtPascoa, INTERVAL -47 DAY)), MONTH(DATE_ADD(dtPascoa, INTERVAL -47 DAY)), DAY(DATE_ADD(dtPascoa, INTERVAL -47 DAY)), 1, 'Carnaval', '';
238
239 INSERT INTO Feriado
240 SELECT YEAR(DATE_ADD(dtPascoa, INTERVAL 60 DAY)), MONTH(DATE_ADD(dtPascoa, INTERVAL 60 DAY)), DAY(DATE_ADD(dtPascoa, INTERVAL 60 DAY)), 1, 'Corpus Christi', '';
241
242 SET dtInicial = DATE_ADD(dtInicial, INTERVAL 1 YEAR);
243
244END WHILE;
245
246
247END